我有一个 MVC3.0 (.Net 4.0) 应用程序,它在 Windows 7 开发机器(使用 VS2010)上运行得很好。同样的应用程序也可以在其中一台装有 IIS 7 的 Windows 8 服务器上正常运行。
但是,同一个应用程序在其他带有 IIS7 的 Windows 8 服务器上抛出以下异常。
操作可能会破坏运行时的稳定性。
Stack Trace:
[VerificationException: Operation could destabilize the runtime.] System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
拜托,有人可以帮助我了解导致此问题的原因吗?
是 .NET Framework 4.0 吗? (我验证了两台服务器都有 .Net 已安装 Framework 4.0)
是IIS和MVC 3.0的问题吗? (需要单独安装MVC 3.0才能运行IIS吗?)
我们如何设置 Web 应用程序以在 IIS 7 中以完全信任的方式运行?
或者完全是别的东西(尝试用 spnet_regiis.exe -ir 注册 iis 也没有帮助)
是否有必要安装这个http://www.microsoft.com/en-us/download/details.aspx?id=1491在网络服务器上?
我们将不胜感激。
最佳答案
VerificationException
当 JIT 编译器在程序集中发现不匹配的类型信息或无效的 IL 指令时抛出。例如,调用者和被调用方法之间的方法签名(或返回类型)不匹配(当方法的签名被更改并且相关程序集未重新编译时)。
要解决此问题,您可以使用 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
中查找(这个路径可以稍微改变)。
关于c# - ASP.NET MVC 3 - 操作可能会破坏运行时的稳定性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157997/