今天他们忽然给我打电话说前两天运行的程序突然出错了是公共语言库错误。
公共语言运行库检测到无效的程序。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.InvalidProgramException: 公共语言运行库检测到无效的程序。
源错误:
执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。
堆栈跟踪:
[InvalidProgramException: 公共语言运行库检测到无效的程序。]
SNMIS.snweb.HYDJ.Hcdsdwh.btnOk_Click(Object sender, EventArgs e) +0
System.Web.UI.WebControls.Button.OnClick(EventArgs e)
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument)
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData)
System.Web.UI.Page.ProcessRequestMain()
运用了多种方法也没有解决问题。
后来发现是iis和aspnet之间动态链接库的问题。找不到很好的解决方法卸载aspnet和语言库组件重新安装还是不行,最后把iis和aspnet的组件都卸载,清空临时文件后,重新安装,问题解决了。
解决后又出现了新的问题“未能获取此实现的 CryptoAPI 加密服务提供程序(CSP)”,查找了很多网上的相关问题,没有很好的解决方法。最后在一个很不起眼的地方找到一篇文章说这个问题可以修改web.config的配置解决。
在asp.net的中,创建rsacryptoserviceprovider对象引发异常:system.security.cryptography.cryptographicexception: 未能获取此实现的 cryptoapi 加密服务提供程序(csp)。并且发现,如果在web.config中配置<identity impersonate="false" username="" password=""/>不会出现这个异常,而配置成<identity impersonate="true" username="" password=""/>则会引发这个异常。这种状况在windows 2000 + iis5和windows 2003 server + iis6的状况下都会发生。