На моем сервере Windows Server 2008 размещено приложение ASP.net, использующее олицетворение. Приложение работает до тех пор, пока олицетворяемый пользователь остается в системе на сервере. Однако, когда пользователь выходит из системы, клиенты больше не могут просматривать веб-страницы. Вместо этого они получают зашифрованную ошибку.
Как настроить сервер так, чтобы он работал без того, чтобы подставной пользователь оставался в системе? Заранее спасибо.
решение1
Я нашел проблему и решение.
Проблема:
Веб-сервис использует сертификат X509Certificate2. Конструкторы класса X509Certificate2 пытаются импортировать сертификат в профиль пользователя учетной записи, в которой работает приложение. Зачастую приложения ASP.NET и COM+ олицетворяют клиентов. Когда они это делают, они не загружают профили пользователей для олицетворенного пользователя из соображений производительности. Поэтому они не могут получить доступ к хранилищу сертификатов "User" для олицетворенного пользователя.
Тот же код будет работать при запуске из интерактивного приложения или службы Windows, работающей под учетной записью пользователя, поскольку профиль загружается при входе пользователя в систему или запуске службы.
Решение:
Администратор на машине, где запущено приложение ASP.NET/COM+, должен установить сертификат в хранилище сертификатов машины, называемом хранилищем "Local Computer". Это следует сделать при установке приложения ASP.NET/COM+.
Администратор должен установить разрешения на закрытый ключ, связанный с сертификатом, чтобы предоставить процессу ASP.NET и олицетворяющим его пользователям доступ к ключу. Это необходимо, поскольку только учетная запись пользователя, устанавливающая сертификат или закрытый ключ в хранилище "Local Computer", может впоследствии использовать закрытый ключ 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Чтобы получить больше информации.