2016-08-16 4 views
0

У меня есть веб-приложение, которое работает на Windows Server в IIS. Это приложение использует проверку подлинности Windows. Я пытаюсь использовать C# SqlConnection, так как мне нужно вызвать хранимую процедуру с помощью TVP, но я получаю проблему с регистрацией.SqlConnection Integrated Security

Ошибка

Войти Сбой пользователя «NT AUTHORITY \ ANONYMOUS LOGON

, но мой HttpContext.Current.Identity моя учетная запись Windows.

using (var conn = new SqlConnection(connection)) 
{ 
    conn.Open(); 
} 

Это работает, если я использую Entity Framework:

using (var context = new DatabaseEntities()) 
{ 
    ...  
} 

мне было интересно, почему в стандарте C# SqlConnection, он не использует идентификатор окна, но в связи с Entity Framework, она делает , Любая помощь?

+3

Что вы имеете в виду «стандарт C# SQL соединение» ? В отличие от чего? Вы показали два идентичных фрагмента кода. Вы говорите, что один работает, а другой нет? Каково содержимое переменной 'connection'? (замените любые адреса, имена пользователей и пароль фиктивными данными, но сохраните все * части *). –

+1

Как вы считаете, вы можете вызывать/вызывать хранимую процедуру с Entity, правильно? Мне любопытно, почему вы обычно используете EF, но для этого одного вызова sproc вы, по-видимому, не хотите? – Nikki9696

+0

Я обновил свой OP. Это происходит только при работе на другом сервере, поэтому я не могу получить информацию о соединении. Я не использую Entity Framework, потому что EF не поддерживает параметры таблицы в качестве аргументов для SP. – user3726393

ответ

0

Чтобы использовать HttpContext.Current.Identity при вызове базы данных, вам необходимо включить олицетворение. Это изменяет процесс asp.net для запуска выдачи себя за вас.

Чтобы включить ее, добавьте следующие строки в system.web узла web.config:

<identity impersonate="true"/> 

Вы можете найти более подробную информацию на https://msdn.microsoft.com/en-us/library/xh507fc5.aspx

+0

Я сделал это, все еще продолжаю. – user3726393

Смежные вопросы