Microsoft CryptoAPI 提供了一个标准的框架,应用程序可用此框架来获得加密服务和数字证书服务。除了 CryptoAPI 为 Windows 95、Windows 98、Windows NT 和 Windows 2000 提供的标准服务以外,第三方供应商可开发并销售他们自己的插件模块,提供附加的加密服务。 在 Windows 网络中,为新证书生成一个请求时,该请求中的信息首先被从请求程序传递给 CryptoAPI。然后,CryptoAPI 把相应的数据传递给一个称为加密服务提供程序 (CSP)的程序,该程序安装在您的计算机上,或安装在您的计算机可以访问的某种设备(如智能卡)上。CSP 是一个执行诸如机密密钥交换、数据的数字签名以及公钥身份验证之类的加密操作的独立软件模块。
否则,就会出现一些问题。
你应该将其升级为 VS.NET 2003自带的版本,版本号为v1.1.4322.
在该版本的 Framework中,aspnet就可以访问加密接口了.祝你好运.
在v1.1.3705版本(VS.NET 2002 自带的这个版本)下,aspnet帐户(就是 ASP.NET程序运行时使用的帐户)是没有特权访问加密服务的.
建议你升级为v1.1.4322(VS.NET 2003会带这个版本的),在这个版本下,你是可以访问加密服务的.我曾经在应用中碰到与你同样的问题,升级之后,就不会有这样的问题出现.另外还有一个办法,就是提高你的ASP.NET帐户的特权等级,不过,这个办法我没有试过.上面的建议是我的实践中验证过的.
C:\WINDOWS\Microsoft.NET\Framework\[你的版本号]\
目录下,找到aspnet_regiis.exe,
使用此命令行工具,你可以将你的.netframework 注册到 iis 中去,与先安装iis的效果就一样了.
“如果您的操作系统是出口版本,.NET Framework 仍然不会为非托管实现使用增强加密。为了规避这种情况,您可以安装 High Encryption Pack。Windows 2000 的 Service Pack 2 中包括了 High Encryption Pack,您可以从 Windows 2000 High Encryption Pack 中获得这个 Service Pack。 对于 Windows NT® 4.0,Service Pack 以标准和高加密两种版本发行。如果您还没有安装任一版本,请下载 Service Pack 6a 的高加密版。 对于 Windows ME、Windows 98 和 Windows 95,Microsoft Internet Explorer 5.5 中包括了 High Encryption Pack。如果您运行的 Internet Explorer 版本低于 5.5,可以获得相应的 High Encryption Pack。”更多信息参考http://www.microsoft.com/china/msdn/msdnmag/issues/02/06/crypto/crypto.asp