尝试“System.Web.Mvc.PreApplicationStartCode.Start()”到关键方法“System.Web.WebPages.Razor.PreApplicationStartCode.Start()”失败

我的应用程序工作正常,我做了一些升级后,我得到这个错误。

“/”应用程序中的服务器错误。


尝试通过安全透明方法“ System.Web.Mvc.PreApplicationStartCode.Start() ”访问安全关键方法“ System.Web.WebPages.Razor.PreApplicationStartCode.Start() ”失败。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的位置。

exception详细信息: System.MethodAccessException :尝试通过安全透明方法“ System.Web.Mvc.PreApplicationStartCode.Start() ”访问安全关键方法“ System.Web.WebPages.Razor.PreApplicationStartCode.Start() ”失败。

源错误 :执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。

版本信息 :Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.18055

我不记得我做的更新。 有没有办法来解决这个问题?

我认为这个问题已经解决了,但是如果没有,使用Nuget的这个包:

 Install-Package Microsoft.AspNet.Mvc -Version 5.0.0 

我为这个错误浪费了一天的时间,但是这一行已经为我完成了工作

尝试过。 。 。 安装程序包Microsoft.AspNet.Mvc – 版本5.0.0和。 。 。 安装程序包-Id Microsoft.AspNet.WebHelpers

都没有成功,最后不得不通过nuget更新所有包。 。 工作!

http://www.3dbuzz.com/forum/threads/202082-ASP-net-MVC-Error-before-application-start

“如果你正在使用visual studio打开nuget软件包窗口并运行Update-Package,则会将所有的dll更新到最新的版本。如果仍然无效,请参阅此页面: http : //www.asp.net/ mvc / tutorials / mvc-5 / how-to-upgrade-an-aspnet -mvc-4-and-web-api-project-to-aspnet -mvc-5-and-web-api-2 “

通过以下链接pipe理解决此问题: http : //www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-到ASPNET-MVC -5-和networkingAPI-2

部署Mvc从4升级到5的站点时出现此错误,但我没有更新web.config。

由此改变:

 <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0- 4.0.0.0 " newVersion=" 4.0.0.0 " /> </dependentAssembly> 

对此:

 <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" culture="neutral" /> <bindingRedirect oldVersion="0.0.0.0- 5.0.0.0 " newVersion=" 5.0.0.0 " /> </dependentAssembly> 

为我解决了这个问题。

对于我也同样的错误发生。 它通过安装NuGet软件包被修复

  Install-Package -Id Microsoft.AspNet.WebHelpers 

我有一个类似的问题,并通过基于文章更新Razor 2.0到3.0与Asp.net MVC by Anthony Fassett

下面的代码块从我的Web.Config中丢失了:

 <dependentAssembly> <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" /> </dependentAssembly> 

这个问题有多种解决scheme:

  • 按照教程升级你的asp.net解决scheme
  • 不要忘记删除Microsoft-Web-Helpers DLL并安装nuget软件包Microsoft.AspNet.WebHelpers

然后,确保你已经升级了所有的nuget软件包(使用“Upgrade-Package”)并在web.config中检查你的dll。

在转换项目时,错误可能是旧DLL中的一个操作。

就我而言,一个nuget安装已经改变了我的Web.Config:

  <dependentAssembly> <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> <bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="1.1.0.0" /> </dependentAssembly> 

newVersion="1.1.0.0" **应该是newVersion="5.1.0.0"

右键单击项目 – >pipe理Nuget包寻找解决scheme

Microsoft.AspNet.MvcMicrosoft.Net.Compilers更新最新版本

在我的情况下,这是一个不兼容的问题。 我有这些pacakges:

  • Microsoft.AspNet.Mvc版本4.x
  • Microsoft.AspNet.RazorMicrosoft.AspNet.WebPages ,版本3.x

我想升级Mvc到5.x会有效,但是我需要保留Mvc 4.x,所以我不得不把RazorMvc降级到2.x。 为此,您只需安装旧版本,如下所示:

 Install-package Microsoft.AspNet.WebPages -version 2.0.30506 Install-Package Microsoft.AspNet.Razor -Version 2.0.30506 

降级这些软件包后,第一个错误消失了,但是还有另一个与web.config的问题相关的错误。 我不得不改变Razor的绑定redirect:

 <dependentAssembly> <assemblyIdentity name="System.Web.Razor" ... /> <!--bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" /--> <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> </dependentAssembly> 

我不知道为什么,但是绑定redirect没有被Nuget安装更新,应该这样做。

我通过应用“Install-Package Microsoft.AspNet.Mvc”命令解决了我的问题。

之后,我用Web API解决了我的项目。

当我升级了一个NuGet包 – “ Microsoft.AspNet.Web Pages ”版本3.2.3时,我收到了这个错误。 我正在使用VS2012,使用Windows身份validation或Windows Azure身份validation模板“ Internet应用程序 ”启动一个新的“ ASP.NET MVC 4 Web应用程序 ”。

也许更新与其他组件不兼容,而且这些其他组件也必须升级。 其他答案build议更新Microsoft.AspNet.MvcMicrosoft.Net.Compilers ,和/或Microsoft.AspNet.WebHelpers

我正在处理ASP.NET Web API项目,并添加以下nuget CacheCow.Server.EntityTagStore.SqlServer后获取相同的问题

它解决了安装这一个

 Install-Package Microsoft.AspNet.Mvc 

安装程序包-Id Microsoft.AspNet.WebHelpers

安装程序包Microsoft.AspNet.Mvc – 版本5.0.0

这对我有效