我的 Windows Server 2008 服务器托管一个使用模拟的 ASP.net 应用程序。只要被模拟的用户保持登录到服务器,该应用程序就可以工作。但是,当用户注销时,客户端将无法再查看网页。他们反而会收到一个神秘的错误。
如何配置服务器,使其在模拟用户不保持登录状态的情况下工作?提前致谢。
答案1
我找到了问题和解决方案。
问题:
Web 服务使用 X509Certificate2 证书。X509Certificate2 类构造函数尝试将证书导入应用程序运行的用户帐户的用户配置文件中。ASP.NET 和 COM+ 应用程序经常模拟客户端。当它们这样做时,出于性能原因,它们不会加载模拟用户的用户配置文件。因此,它们无法访问模拟用户的“用户”证书存储。
当从交互式应用程序或以用户帐户运行的 Windows 服务运行时,相同的代码将会起作用,因为配置文件是在用户登录或服务启动时加载的。
解决方案:
运行 ASP.NET/COM+ 应用程序的计算机上的管理员应将证书安装在计算机证书存储区(称为“本地计算机”存储区)中。此操作应在安装 ASP.NET/COM+ 应用程序时完成。
管理员应设置与证书关联的私钥的权限,以授予 ASP.NET 进程和模拟用户访问密钥的权限。这是必要的,因为只有在“本地计算机”存储中安装证书或私钥的用户帐户以后才能使用与证书关联的 RSA 私钥。使用 Windows 资源工具包工具 (http://msdn2.microsoft.com/en-us/library/aa384088.aspx(http://msdn2.microsoft.com/en-us/library/aa384088.aspx))配置权限。
ASP.NET/COM+ 应用程序代码应使用已安装的证书,而不是尝试从 PFX 文件安装证书。让代码使用 X509Store 类找到已安装的证书。