通过安全透明方法'WebMatrix.WebData.PreApplicationStartCode.Start()'尝试


176

更新:从mvc 4到mvc 5相同。

我开始了一个新的mvc 4项目,并在其中迁移了一个mvc 3项目(控制器/模型/脚本等)。现在一切都编译了,但出现以下错误:

尝试通过安全透明方法'WebMatrix.WebData.PreApplicationStartCode.Start()'访问安全关键方法'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport(System.String)'失败。

我在网上找不到与此错误有关的任何内容。在进入应用程序启动之前,将出现错误。

我尝试使用nuget重新安装所有程序集,使“干净的” web.config无效。

有人遇到过这个问题吗?

Answers:


246

对我来说,此错误是因为从MVC 4更新到MVC 5后没有安装Microsoft.AspNet.WebHelpers。此问题已通过安装NuGet软件包进行了修复。

Install-Package -Id  Microsoft.AspNet.WebHelpers

1
这为我解决了这个问题;它的确在我的Resources班级上造成了一些名称空间问题,但我将其更改为,Properties.Resources.xxxxx并解决了这些问题。
科迪2015年

2
我运行了它,但是它没有用...但是幸运的是,我看到在另一个答案中,还有第二条命令要运行:stackoverflow.com/a/22587521/482256
Kevin Nelson

这对我来说是固定的,但我还需要以下程序集绑定中的code<dependentAssembly> <assemblyIdentity name =“ WebMatrix.WebData” publicKeyToken =“ 31bf3856ad364e35” culture =“ neutral” /> <bindingRedirect oldVersion =“ 0.0.0.0-3.0.0.0 “ newVersion =” 3.0.0.0“ /> </ dependentAssembly>code
Marchief

我安装了上述软件包,问题就消失了。我使用NUget UI进行安装,并且还为我安装了所有依赖项
AttaH。18年

204

如果遇到错误

尝试通过安全透明方法'WebMatrix.WebData.PreApplicationStartCode.Start()'访问安全关键方法'System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport(System.String)'失败。

为了解决此问题,请使用NuGet软件包管理器安装此软件包。

Install-Package Microsoft.AspNet.WebHelpers

之后,您可能会收到另一个错误

无法加载WebMatrix.Data 3.0.0.0版程序集

要解决此问题,请使用NuGet软件包管理器安装此软件包。

Install-Package Microsoft.AspNet.WebPages.Data

升级到VS 2015 RTM时出现此确切错误。VS 2013可以运行相同的代码,唯一的区别是2015年为IIS生成的新.config文件,我怀疑2013 IISExpress会忽略该文件。这个答案也解决了这种情况,同时添加了两个nuget。
angularsen,2015年

值得一提的是,我在使用VS2015 RTM的网站上根本无法成功运行。安装Microsoft.AspNet.WebHelpers修复了YSOD,但是由于一些SQL访问权限,我超时了。完全相同的代码在VS2013中运行良好。
angularsen,2015年

1
从ASP .NET MVC 4升级到ASP .NET MVC 5时,我在使用VS 2013 Express Edition时遇到了此问题。这很有用,因为@Anushka告诉了第二个解决方案问题。
Jerameel Resco 2015年

当我尝试在VS 2015中运行我的解决方案时出现此错误。它在VS 2013中运行得很好。按照建议的方式安装2个软件包,但是我不确定为什么需要安装它们。我还有其他的解决方案,我在VS 2013开发了不VS 2015年得到这个错误
John81

2
我们发现VS2015决定在编译时将某些WebMatrix DLL放入webapp的bin目录中-VS2013不会这样做。我不知道2015年从何处获取这些DLL,但是当您启动由VS2013编译而没有显式使用WebMatrix DLLS的应用程序时,它们必须与从GAC加载的DLL的版本不同。包含在应用程序bin目录中。请注意,如果从2015输出中删除4个WebMatrix文件,然后重新启动IIS,问题将消失。
西蒙·格林


14

我尝试了上述所有解决方案,但仍然无法正常工作,直到发现web.config编译元素引用的是WebMatrix.Data和WebMatrix.WebData的2.0.0.0版本。将web.config中这些条目的版本更改为3.0.0.0对我有所帮助。


10

升级mvc 4到时,我一直在努力解决类似的问题mvc 5

尝试通过安全透明方法'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()'访问安全关键方法'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly,System.String)'失败。

发布对话框中的删除多余文件复选框为我解决了该问题。


我在SharePoint 2013 Provider托管应用程序(部署到Azure的ASP.NET MVC 5)中遇到了此错误,发布对话框中的“删除其他文件”也为我解决了该错误。
Anatoly Mironov 2014年

8

重新安装Microsoft.AspNet.WebHelpers对我有用

Update-Package reinstall Microsoft.AspNet.WebHelpers

6

只是一个建议...这是由我升级到部署服务器上站点bin文件夹中的MVC 5之后,来自MVC 3项目的一些旧dll引起的。即使这些dll不再被代码库使用,它们似乎也引起了问题。清理全部,然后重新部署,一切都很好。


这是我出错的原因。我在bin文件夹中有旧文件和新文件。感谢
Abhinaw Sharma 2015年

5

您可能还会得到:

无法加载文件或程序集“ WebMatrix.Data,版本= 3.0.0.0,区域性=中性,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

这已经移到这个包

 Install-Package Microsoft.AspNet.WebPages.Data

在尝试对此问题的任何答案之前以及更新软件包之后,您可能应该进行干净的构建


3

这是我解决此问题的方法:

打开nuget 软件包管理器控制台并安装以下nuget软件包:

Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package

清理解决方案,重新构建,我的asp.net Web应用程序开始工作!


2

从bin中删除所有文件,然后重新构建解决方案对我来说很有用。


1

对我来说,此错误是由DotNetOpenAuth从MVC4升级到MVC5后与MVC5不兼容引起的。卸载Microsoft.Web.WebPages.OAuth可以解决此问题。


1

我已将其从引用中删除。然后在Package Manager控制台中运行它

Install-Package WebMatrix.Data

最后将WebMatrix.WebData程序集添加到引用,并重建项目。它对我有用。我希望它也能解决您的问题。


0

我通过helppages nuget软件包安装了webapi。该软件包用beta版本替换了大部分asp.net mvc 4二进制文件,这些版本无法与项目的其余部分一起很好地工作。解决的办法是还原原始的mvc 4 dll,一切都很好。


0

我遇到了同样的问题,我不得不更新MVC Future(Microsoft.AspNet.Mvc.Futures)

Install-Package Microsoft.AspNet.Mvc.Futures

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.