У меня есть веб-приложение asp.net, которое отлично работает на машине с Windows XP в домене. Я портирую его на автономную машину с Windows 7. Приложение использует веб-службу, которая обращается к серверу sql. Веб-сервер (IIS 7.5) и SQL Server находятся на одном автономном компьютере.
Я включил аутентификацию Windows для веб-сайта и веб-службы. Веб-служба использует строку подключения для доверенного подключения. Учетные данные веб-службы используют System.Net.CredentialCache.DefaultCredentials. Я заметил, что после звонка имя пользователя, пароль и имя домена остаются пустыми! Веб-сервис и веб-сайт используют «Classic .NET AppPool» с идентификатором NetworkServices.
Я получаю исключение «NT AUTHORITY \ ANONYMOUS LOGON» при вызове базы данных в веб-службе. Я предполагаю, что это связано с пустыми учетными данными.
Я ожидаю, что пользователь ASPNET будет маркером безопасности для базы данных. Почему этого не происходит? Я пропустил настройку? (Обычно это происходит, когда sql-сервер и веб-сервер находятся на двух разных машинах в домене, делегирование и двойное переключение, но в моем случае все находится в коробке разработчика)
Пользователь «ASPNET» в последний раз был замечен в Windows XP, он не существует в Vista или Windows 7, потому что IIS размещает ASP.NET напрямую и просто использует сетевую службу в качестве идентификатора пула.
Также проверьте настройки олицетворения. Для простоты убедитесь, что параметр «Анонимная проверка подлинности» в IIS привязан к удостоверению пула приложений и что для основных параметров сайта также задано значение «Подключиться как ...» удостоверение пула.
Наконец, добавьте запись входа в SQL Server для сетевой службы (или любого другого идентификатора, под которым работает пул).