У меня есть веб-приложение, размещенное на Windows Server 2008 64 Bit с IIS 7 и SQL Server 2008. Учетная запись пула веб-приложений - это сетевая служба, и я добавил эту учетную запись для входа в SQL Server 2008 и сопоставил ее с пользователем в базе данных с правами dbowner .
Этот веб-сайт находится в ASP.Net 2.0 и использует проверку подлинности с помощью форм для защиты доступа к некоторым из своих ресурсов (не ко всем), поэтому в IIS 7 включены анонимный доступ, Imersonation = True и проверка подлинности с помощью форм. Веб-приложение использует элементы управления поставщиками членства.
Когда сайт запускается; внутри «Запуск приложения» он пытается подключиться к базе данных и прочитать некоторые конфигурации запуска. Строка подключения к базе данных сохраняется в web.config. Ниже приводится строка подключения.
Data Source=XXXXX; Initial Catalog=XXXXX; Integrated Security=SSPI; Trusted_Connection=True;
Однако при запуске приложения ему не удалось подключиться к базе данных, и я обнаружил следующие 3 записи в журнале событий.
Подтверждение связи SSPI не удалось с кодом ошибки 0x8009030c при установлении соединения со встроенной безопасностью; соединение было закрыто. [КЛИЕНТ:]
Ошибка входа. Логин из ненадежного домена и не может использоваться с аутентификацией Windows. [КЛИЕНТ:]
Event code: 3005
Event message: An unhandled exception has occurred.
Event time: 4/26/2011 9:22:05 PM
Event time (UTC): 4/26/2011 6:22:05 PM
Event ID: 71a4b2cd8d40492ab89af3430cf42ea5
Event sequence: 2
Event occurrence: 1
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/5/ROOT-1-129483157247676684
Trust level: Full
Application Virtual Path: /
Application Path: C:\LMS Projects\Deployment\Web Applications\Microsoft Dynamics CRM Customer LMS Portal\
Machine name: LMS
Process information:
Process ID: 3688
Process name: w3wp.exe
Account name: NT AUTHORITY\NETWORK SERVICE
Exception information:
Exception type: LoyaltyException
Exception message: Exception of type 'LMS.Helpers.LoyaltyException' was thrown.
Request information:
Request URL: http://localhost:6666/default.aspx
Request path: /default.aspx
User host address: ::1
User:
Is authenticated: False
Authentication Type:
Thread account name: NT AUTHORITY\NETWORK SERVICE
Thread information:
Thread ID: 4
Thread account name: NT AUTHORITY\NETWORK SERVICE
Is impersonating: False
Stack trace: at ASP.global_asax.Application_Start() in c:\LMS Projects\Deployment\Web Applications\Microsoft Dynamics CRM Customer LMS Portal\Global.asax:line 27
Показанное выше исключение - это настраиваемое исключение, которое я генерирую после обработки исключения платформы, чтобы не ошибиться с ошибкой в коде. Этот код отлично работает в среде Windows Server 2003 и IIS 6.0.
При выдаче себя за другое лицо будет использоваться ваш анонимный пользователь, а не пользователь пула приложений.
Вот пара рекомендаций: