尝试通过安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”
Posted
技术标签:
【中文标题】尝试通过安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”【英文标题】:Attempt by security transparent method 'WebMatrix.WebData.PreApplicationStartCode.Start()' 【发布时间】:2013-07-29 09:23:43 【问题描述】:更新:mvc 4 到 mvc 5 相同。
我开始了一个新的 mvc 4 项目并在其中迁移了一个 mvc 3 项目(控制器/模型/脚本等)。虽然现在一切都编译了,但我收到以下错误:
访问安全关键方法“System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport(System.String)”失败。
我在网上找不到任何出现此错误的内容。在进入应用程序启动之前发生错误。
我尝试使用 nuget 重新安装所有程序集,但“干净”的 web.config 无济于事。
以前有人遇到过这个问题吗?
【问题讨论】:
【参考方案1】:对我来说,这个错误是因为我在从 MVC 4 更新到 MVC 5 后没有安装 Microsoft.AspNet.WebHelpers。它已通过安装 NuGet 包修复
Install-Package -Id Microsoft.AspNet.WebHelpers
【讨论】:
这为我解决了这个问题;它确实对我的Resources
类造成了一些命名空间问题,但我将其更改为 Properties.Resources.xxxxx
并修复了问题。
我运行了这个,但它没有工作......但幸运的是,我在另一个答案中看到,还有第二个命令要运行:***.com/a/22587521/482256
这为我修复了它,但我还需要以下程序集绑定code
code
我安装了上面提到的包,问题就消失了。我使用 NUget UI 安装它,它还为我安装了所有依赖项【参考方案2】:
如果遇到错误
尝试通过安全透明方法“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 会忽略它。这个答案也解决了这种情况,添加两个 nugets。 应该提到的是,我在使用 VS2015 RTM 运行我的网站时根本没有成功。安装 Microsoft.AspNet.WebHelpers 修复了 YSOD,但由于某些 sql 访问权限,我得到了超时。完全相同的代码在 VS2013 中运行良好。 我在使用 VS 2013 Express Edition 从 ASP .NET MVC 4 升级到 ASP .NET MVC 5 时遇到了这个问题。这很有帮助,因为@Anushka 用解决方案告诉了第二个问题。跨度> 当我尝试在 VS 2015 中运行我的解决方案时出现此错误。它在 VS 2013 中运行得非常好。按照建议安装 2 个软件包,但我不确定为什么需要安装它们。我在 VS 2013 中开发的其他解决方案在 VS 2015 中没有出现此错误。 我们发现 VS2015 决定在编译时将一些 WebMatrix DLL 放在 webapp 的 bin 目录中 - VS2013 不会这样做。我不知道 2015 年从哪里获得这些 DLL,但是当您启动由 VS2013 编译的应用程序时,它们必须与从 GAC 加载的 DLL 不同的版本(我猜)没有明确的 WebMatrix DLLS包含在应用程序 bin 目录中。请注意,如果您从 2015 输出中删除 4 个 WebMatrix 文件,然后重新启动 IIS,问题就会消失。【参考方案3】:对于登陆这里并尝试从 MVC 4 升级到 MVC5 的任何人,我能够按照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 的说明解决此问题。
我还必须从 nuget 安装“Microsoft.AspNet.WebApi.WebHost”包。但就是这样。
哦,我必须创建这个 appSetting:<add key="owin:AutomaticAppStartup" value="false" />
:)
【讨论】:
【参考方案4】:我尝试了上述所有解决方案,但仍然无法正常工作,直到我发现 web.config 编译元素引用了 WebMatrix.Data 和 WebMatrix.WebData 的 2.0.0.0 版本。将 web.config 中这些条目的版本更改为 3.0.0.0 对我有帮助。
【讨论】:
【参考方案5】:将mvc 4
升级到mvc 5
时,我一直在努力解决类似的问题:
尝试通过安全透明方法“System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()”访问安全关键方法“System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String) ' 失败的。
发布对话框中的删除额外文件复选框为我解决了这个问题。
【讨论】:
我的 SharePoint 2013 Provider Hosted App(ASP.NET MVC 5,部署到 Azure)中出现此错误,发布对话框中的“删除其他文件”也为我解决了这个问题。【参考方案6】:重新安装 Microsoft.AspNet.WebHelpers
对我有用
Update-Package –reinstall Microsoft.AspNet.WebHelpers
【讨论】:
【参考方案7】:还有一个建议... 这是由 MVC 3 项目中的一些旧 dll 在部署服务器上的站点 bin 文件夹中升级到 MVC 5 后引起的。尽管代码库不再使用这些 dll,但它们似乎是导致问题的原因。将其全部清理并重新部署,一切正常。
【讨论】:
这是我出错的原因。我在 bin 文件夹中有旧文件和新文件。谢谢【参考方案8】:您还可以得到:
无法加载文件或程序集 'WebMatrix.Data, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' 或其其中之一 依赖关系。定位程序集的清单定义不 匹配程序集引用。 (HRESULT 异常:0x80131040)
已移至此包
Install-Package Microsoft.AspNet.WebPages.Data
您可能应该在尝试回答此问题的任何答案之前和更新软件包之后进行干净的构建
【讨论】:
【参考方案9】:从 bin 中删除所有文件,然后重建解决方案对我有用。
【讨论】:
【参考方案10】:这是我解决此问题的方法:
打开 nuget 包管理器控制台并安装以下 nuget 包:
Install-Package WebMatrix.Data
Install-Package Microsoft.AspNet.WebHelpers
Update-Package
清理解决方案,重新构建,我的 asp.net 网络应用开始工作!
【讨论】:
【参考方案11】:对我来说,这个错误是由于从 MVC4 升级到 MVC5 后 DotNetOpenAuth 不兼容 MVC5 造成的。卸载 Microsoft.Web.WebPages.OAuth 解决了这个问题。
【讨论】:
【参考方案12】:我已从我的参考资料中删除它。然后在包管理器控制台中运行它
Install-Package WebMatrix.Data
最后将 WebMatrix.WebData 程序集添加到引用中,并重建项目。它对我有用。我希望它也能解决你的问题。
【讨论】:
【参考方案13】:我通过 helppages nuget 包安装了 webapi。该软件包用 beta 版本替换了大多数 asp.net mvc 4 二进制文件,这些版本与项目的其余部分不能很好地协同工作。修复是恢复原来的 mvc 4 dll,一切都很好。
【讨论】:
【参考方案14】:我遇到了同样的问题,我不得不更新 MVC Future (Microsoft.AspNet.Mvc.Futures)
Install-Package Microsoft.AspNet.Mvc.Futures
【讨论】:
【参考方案15】:对我来说,这个错误通过添加解决了
<system.web>
<trust level="Full">
</system.web>
在 web.config 中
【讨论】:
以上是关于尝试通过安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”的主要内容,如果未能解决你的问题,请参考以下文章
System.MethodAccessException:尝试通过安全透明方法访问安全关键方法在所有应用程序上失败
尝试通过安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”
如何解决错误“尝试通过安全透明方法'System.Web.Http.GlobalConfiguration.get_Configuration()
尝试通过安全透明方法“Compat.Button1_Click(System.Object, System.EventArgs)”访问安全关键方法“x”失败