У меня есть небольшой тестовый скрипт ASP.NET, который открывает соединение с базой данных SQL Server на другом компьютере в домене. Это работает не во всех случаях.
Настроить:
IIS 7.5 под W2K8R2 пытается подключиться к удаленному экземпляру SQL Server 2008 R2. Все машины находятся в одном домене.
Используя ApplicationPoolIdentity для веб-сайта, он не может подключиться к SQL Server с помощью следующего:
Не удалось войти в систему для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.SqlClient.SqlException: сбой входа для пользователя 'NT AUTHORITY \ ANONYMOUS LOGON'.
Однако, если я переключаю идентификацию модели процесса на NETWORK SERVICE или мою учетную запись домена, соединение с базой данных будет успешным.
Я предоставил доступ \ $ в SQL Server.
Я не делаю никакой аутентификации на веб-сайте, это просто простой скрипт, чтобы открыть соединение с базой данных, чтобы убедиться, что она работает.
У меня включена анонимная аутентификация и настроено использование идентификатора пула приложений.
Как мне сделать эту работу? Почему ApplicationPoolIdentity пытается использовать ANONYMOUS LOGON? А еще лучше, как мне заставить его перестать использовать анонимный вход?
источник
Ответы:
У меня была такая же проблема. Согласно этой странице , ApplicationPoolIdentity должен обращаться к сетевым ресурсам как учетная запись компьютера (DOMAIN \ COMPUTERNAME $), но вместо этого он использовал NT AUTHORITY \ ANONYMOUS LOGON для доступа к SQL-серверу.
Я смог использовать это исправление, чтобы заставить ApplicationPoolIdentity работать так, как говорит док. Это исправление не описывает решение для доступа к сетевым ресурсам как NT AUTHORITY \ ANONYMOUS LOGON, но оно связано с изменением пароля компьютера.
Этот поток stackoverflow помог мне найти это решение:
Другие полезные советы по отладке удостоверений ASP.NET и удостоверений SQL
Поскольку встроенная аутентификация SQL связана с идентификацией потока, полезно иметь возможность просматривать вашу идентификацию пользователя, идентификацию потока (которая изменяется в зависимости от олицетворения) и регистрацию на сервере SQL. Этот фрагмент ASPX отображает все три:
источник
У меня была точно такая же проблема. Я выдернул волосы на несколько часов и наконец перезагрузил машину. Проблема ушла! Обратите внимание, что перезапуск IIS через iisreset НЕ решил проблему. Он исчез, только когда я перезапустил сервер.
источник