Я разрабатываю приложение ASP.NET, которое подключается к базе данных (на другом компьютере). Когда я пытаюсь подключиться со своего компьютера, проблем нет, когда я развертываю его в среде назначения, EF возвращает исключение:
The underlying provider failed on Open.System.Data.SqlClient.SqlException (0x80131904): Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'. at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning() at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, SqlConnection owningObject) at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, TimeoutTimer timeout) at
Моя конфигурация:
<authentication mode="Windows" />
<customErrors mode="Off"></customErrors>
<identity impersonate="true" />
<security>
<authentication>
<windowsAuthentication useKernelMode="false">
<extendedProtection tokenChecking="None" />
</windowsAuthentication>
</authentication>
</security>
И моя строка подключения:
<add name="pmgbicopEntities" connectionString="metadata=res://*/copDB.csdl|res://*/copDB.ssdl|res://*/copDB.msl;provider=System.Data.SqlClient;provider connection string="Data Source=[NAME]\devde;Initial Catalog=[NAME];Integrated Security=True;Trusted_Connection=True;MultipleActiveResultSets=True"" providerName="System.Data.EntityClient" />
Если я удаляю инструкцию базы данных, this.Page.User является моей текущей учетной записью (и это правильно!), но когда я открываю новое соединение через EF, я становлюсь «Анонимным»
Я пробовал с олицетворением, например:
WindowsIdentity winId = (WindowsIdentity)HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
//EF SOMETHING
}
catch (Exception exx)
{
}
finally
{
if (ctx != null)
ctx.Undo();
}
Но я получаю то же исключение: «Ошибка входа в систему для пользователя« NT AUTHORITY \ ANONYMOUS LOGON »».
Я пытался изменить пользователя пула приложений, пытался выдать себя за него вручную, но безуспешно.
В конфигурации IIS есть кое-что из kerberos, которые я пытался включить и отключить, но ничего не изменилось.
У вас есть какие-либо предложения? Должен ли я включать что-то вроде «доверия» между машинами? Для моей машины разработки из «поддельного IIS» у меня нет проблем, но мой пользователь включен в БД.
Заранее спасибо.
CREATE LOGIN [MyDomain\MyComputer$] FROM WINDOWS;
- person Tom Hall   schedule 08.11.2013