Почему пользователь должен войти в систему, чтобы олицетворение работало?

Мой сервер Windows Server 2008 содержит приложение ASP.net, которое использует олицетворение. Приложение работает, пока олицетворяемый пользователь остается подключенным к серверу. Однако, когда пользователь выходит из системы, клиенты больше не могут просматривать веб-страницы. Вместо этого они получают загадочную ошибку.

Как я могу настроить сервер для работы без того, чтобы олицетворенный пользователь оставался в системе? Заранее спасибо.

1 ответ

Я нашел проблему и решение.

Проблема:

Веб-служба использует сертификат X509Certificate2. Конструкторы класса X509Certificate2 пытаются импортировать сертификат в профиль пользователя учетной записи пользователя, в которой выполняется приложение. Много раз приложения ASP.NET и COM+ олицетворяют клиентов. Когда они это делают, они не загружают профили пользователей для олицетворенного пользователя по соображениям производительности. Таким образом, они не могут получить доступ к хранилищу сертификатов "Пользователь" для олицетворенного пользователя.

Тот же код будет работать при запуске из интерактивного приложения или службы Windows, работающей под учетной записью пользователя, поскольку профиль загружается при входе пользователя в систему или при запуске службы.

Решение:

  1. Администратор на компьютере, на котором выполняется приложение ASP.NET/COM+, должен установить сертификат в хранилище сертификатов компьютера, которое называется хранилищем "Локальный компьютер". Это должно быть сделано, когда установлено приложение ASP.NET/COM+.

  2. Администратор должен установить разрешения для закрытого ключа, связанного с сертификатом, чтобы дать процессу ASP.NET и олицетворенным пользователям доступ к ключу. Это необходимо, поскольку только учетная запись пользователя, которая устанавливает сертификат или закрытый ключ в хранилище "Локальный компьютер", может позднее использовать закрытый ключ RSA, связанный с сертификатом. Используйте WinHttpCertCfg.exe, доступный из Инструментов Windows Resource Kit ( http://msdn2.microsoft.com/en-us/library/aa384088.aspx ( http://msdn2.microsoft.com/en-us/library/aa384088.aspx)) для настройки разрешений.

  3. Код приложения ASP.NET/COM+ должен использовать установленный сертификат, а не пытаться установить его из файла PFX. Пусть код найдет установленный сертификат, используя класс X509Store.

См. http://support.microsoft.com/kb/948154 для получения дополнительной информации.

Другие вопросы по тегам