На моем сервере Windows Server 2008 размещено приложение ASP.net, которое использует олицетворение. Приложение работает, пока олицетворяемый пользователь остается на сервере. Однако, когда пользователь выходит из системы, клиенты больше не могут просматривать веб-страницы. Вместо этого они получают загадочную ошибку.
Как я могу настроить сервер для работы без того, чтобы олицетворенный пользователь оставался в системе? Заранее спасибо.
Я нашел проблему и решение.
Проблема:
Веб-сервис использует сертификат X509Certificate2. Конструкторы класса X509Certificate2 пытаются импортировать сертификат в профиль пользователя учетной записи пользователя, в которой выполняется приложение. Часто приложения ASP.NET и COM + олицетворяют клиентов. Когда они это делают, они не загружают профили олицетворенного пользователя по соображениям производительности. Таким образом, они не могут получить доступ к хранилищу сертификатов «Пользователь» для олицетворенного пользователя.
Тот же код будет работать при запуске из интерактивного приложения или службы Windows, запущенной под учетной записью пользователя, поскольку профиль загружается, когда пользователь входит в систему или запускается служба.
Решение:
Администратор компьютера, на котором работает приложение ASP.NET/COM+, должен установить сертификат в хранилище сертификатов компьютера, которое называется хранилищем «Локальный компьютер». Это должно быть сделано при установке приложения ASP.NET/COM+.
Администратор должен установить разрешения для закрытого ключа, связанного с сертификатом, чтобы предоставить процессу ASP.NET и олицетворенным пользователям доступ к ключу. Это необходимо, потому что только учетная запись пользователя, которая устанавливает сертификат или закрытый ключ в хранилище «Локальный компьютер», может позже использовать закрытый ключ RSA, связанный с сертификатом. Используйте WinHttpCertCfg.exe, доступный в Windows Resource Kit Tools (http://msdn2.microsoft.com/en-us/library/aa384088.aspx (http://msdn2.microsoft.com/en-us/library/aa384088.aspx)) для настройки разрешений.
Код приложения ASP.NET/COM+ должен использовать установленный сертификат, а не пытаться установить его из файла PFX. Попросите код найти установленный сертификат с помощью класса X509Store.
Видеть http://support.microsoft.com/kb/948154 Чтобы получить больше информации.