我有一个MVC3.0 (.Net 4.0)应用程序,它在Windows7开发机器(与VS2010一起)上运行得非常好。在具有IIS 7的Windows 8服务器上,同一应用程序也运行良好。
但是,与IIS7完全相同的应用程序在其他Windows8Server上抛出下面的异常。
操作可能会破坏运行时.的稳定性。
堆栈跟踪: VerificationException:操作可能会破坏运行时的稳定性。System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext上下文,AsyncCallback cb,Object extraData) System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() System.Web.HttpApplication.ExecuteStep(IExecutionStep step,布尔& completedSynchronously)
拜托,有人能帮我弄清楚是什么原因造成了这个问题吗?
它是.NET框架4.0吗?(我验证了这两台服务器都安装了.Net Framework4.0)
是IIS和MVC 3.0问题吗?(我们是否需要单独安装MVC 3.0才能运行IIS?)
如何设置web应用程序以完全信任IIS 7运行?
或者完全是其他的东西(尝试向spnet_regiis.exe -ir注册iis也没有帮助)
是否有必要在web服务器上安装此http://www.microsoft.com/en-us/download/details.aspx?id=1491?
任何帮助都将不胜感激。
发布于 2012-08-28 12:16:55
当JIT编译器发现程序集中的类型信息不匹配或IL指令无效时,将引发VerificationException。例如,调用方和被调用方法之间的方法签名(或返回类型)不匹配(当方法的签名被更改且依赖程序集未被重新编译时)。
要解决这个问题,可以使用peverify检查程序集:
peverify MyCompany.WebAppMainAssembly.dll它会告诉我们是什么成员造成了冲突。有点像found <method sig>, expected <expected signature>。现在你知道是什么组装导致了这个问题。如有必要,请重新安装在GAC中。MVC,EF和Unity有msi安装程序,或者手动安装.
顺便说一句,要运行peverify,打开Visual Studio Command Prompt或在C:\Program Files (x86)\Microsoft SDKs\Windows\<winver>\Bin中查找(这个路径可以改变一点)。
发布于 2013-10-30 15:53:26
该问题可能与以下修补程序有关:http://support.microsoft.com/kb/2748645
根据您对问题的解释和您已经完成的测试,这个框架错误听起来似乎是最有可能的罪魁祸首。即使您的目标是.Net 4.0,.Net 4.5一旦安装,也将取代.Net 4.0。
您使用VS2010的Windows7机器可能没有.Net 4.5,因此不会受到错误的影响。
正常工作的Windows8服务器(通常随.Net 4.5一起提供)可能已经更新,因此已经有了此修补程序
因此,不工作的Windows 8服务器可能还没有使用此修补程序进行更新。(运行正常的Windows更新最终也会得到此更新)
您可能需要比较两台服务器上安装的更新,以确保环境匹配。
如果要为安装了.Net 4.5的计算机进行开发,则需要考虑切换到VS2012或手动安装.Net 4.5以反映更改。但是要小心,如果你的目标机器没有.Net 4.5,还有其他的破坏变化.
Visual 2012中的可视C#破坏更改
.NET框架4.5中的应用程序兼容性
https://stackoverflow.com/questions/12157997
复制相似问题