4

我有一个 MVC3.0 (.Net 4.0) 应用程序,它在 Windows 7 开发机器(使用 VS2010)上运行得非常好。相同的应用程序也可以在一台带有 IIS 7 的 Windows 8 服务器上正常运行。

但是,同样的应用程序在其他带有 IIS7 的 Windows 8 Server 上引发以下异常。

操作可能会破坏运行时的稳定性。

堆栈跟踪:

[VerificationException:操作可能会破坏运行时。] 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 中以 FULL TRUST 运行?

或者完全是别的东西(尝试用 spnet_regiis.exe -ir 注册 iis 也没有帮助)

是否有必要在 Web 服务器上安装此http://www.microsoft.com/en-us/download/details.aspx?id=1491 ?

任何帮助将不胜感激。

4

2 回答 2

4

VerificationExceptionJIT 编译器在程序集中发现不匹配的类型信息或无​​效的 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(此路径可以更改一点)。

于 2012-08-28T12:16:55.953 回答
0

该问题可能与此修补程序有关:http: //support.microsoft.com/kb/2748645

根据您对问题的解释和您已经完成的测试,这个框架错误听起来很可能是罪魁祸首。即使您的目标是 .Net 4.0,.Net 4.5 也会在安装后替换 .Net 4.0。

您的装有 VS2010 的 Windows 7 机器可能没有 .Net 4.5,因此不受该错误的影响。

工作的 Windows 8 服务器(通常与 .Net 4.5 一起提供)可能已经更新,因此已经有这个修补程序

因此,无法使用此修补程序的 Windows 8 服务器可能尚未更新。(运行正常的 Windows 更新最终也会获得此更新)

您可能需要比较两台服务器上安装的更新以确保环境匹配。

如果您要为安装了 .Net 4.5 的机器进行开发,您需要考虑切换到 VS2012 或手动安装 .Net 4.5 以反映更改。但要小心,如果您还针对没有 .Net 4.5 的机器,还有其他重大更改...

Visual Studio 2012 中的 Visual C# 重大更改

.NET Framework 4.5 中的应用程序兼容性

于 2013-10-30T15:53:26.547 回答