当尝试从MVC3升级到MVC4时,"操作可能会破坏运行时的稳定性"

Sha*_*ane 6 .net exception-handling razor asp.net-mvc-3 asp.net-mvc-4

Server Error in '/' Application.
Run Code Online (Sandbox Code Playgroud)

对此进行故障排除有什么好处?我让调试逐步通过global.asax中的所有内容,并且没有错误.

Operation could destabilize the runtime.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Security.VerificationException: Operation could destabilize the runtime.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace: 


[VerificationException: Operation could destabilize the runtime.]
   System.Web.Mvc.Razor.MvcWebPageRazorHost.GetRidOfNamespace(String ns) +32
   System.Web.Mvc.Razor.MvcWebPageRazorHost..ctor(String virtualPath, String physicalPath) +199
   System.Web.Mvc.MvcWebRazorHostFactory.CreateHost(String virtualPath, String physicalPath) +113
   System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfigCore(RazorWebSectionGroup config, String virtualPath, String physicalPath) +422
   System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig(String virtualPath, String physicalPath) +228
   System.Web.WebPages.Razor.WebRazorHostFactory.CreateHostFromConfig(String virtualPath) +38
   System.Web.WebPages.Razor.RazorBuildProvider.CreateHost() +51
   System.Web.WebPages.Razor.RazorBuildProvider.get_Host() +56
   System.Web.WebPages.Razor.RazorBuildProvider.EnsureGeneratedCode() +92
   System.Web.WebPages.Razor.RazorBuildProvider.get_CodeCompilerType() +54
   System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider) +59
   System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders() +209
   System.Web.Compilation.BuildProvidersCompiler.PerformBuild() +15
   System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath) +9929933
   System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +299
   System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) +103
   System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound) +165
   System.Web.Compilation.BuildManager.GetObjectFactory(String virtualPath, Boolean throwIfNotFound) +33
   System.Web.Mvc.BuildManagerWrapper.System.Web.Mvc.IBuildManager.FileExists(String virtualPath) +40
Run Code Online (Sandbox Code Playgroud)

Yah*_*hia 3

这是一件非常奇怪的事情 - 提供的信息不足以重现它......所以只有一些可能导致您看到的内容:

  • Intellitrace(将其关闭并查看是否有帮助)
  • 使用任何“旧控件”(尤其是 V 1.1),将其注释掉并查看是否有帮助
  • Trustlevel,更改[assembly: SecurityRules(SecurityRuleSet.Level1)]为 AssemblyInfo.cs 并查看是否有帮助

它也可能是.NET 4.5 运行时中的一个错误,它在安装时作为 .NET 4 运行时的直接替代品起作用,即使您的代码仅针对 .NET 4,也会使用它!

从链接的文章中,Microsoft 创建了针对 .Net 4.5/4.0 运行时的修复程序作为修补程序: http: //support.microsoft.com/kb/2748645