C# 将mvc 3迁移到mvc 5的System.Web.webpage中的MethodAccessException

C# 将mvc 3迁移到mvc 5的System.Web.webpage中的MethodAccessException,c#,asp.net-mvc,asp.net-mvc-5,C#,Asp.net Mvc,Asp.net Mvc 5,使用Visual Studio 2013,我将混合Asp.Net Webforms/MVC 3/Framework 4.0 web应用程序迁移到Asp.Net Webforms/MVC 5.2.2/Framework 4.5.1 我遵循了这些链接中概述的步骤: 在visual studio中运行应用程序时,出现以下错误: 尝试使用安全透明方法 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' 访问安全关键

使用Visual Studio 2013,我将混合Asp.Net Webforms/MVC 3/Framework 4.0 web应用程序迁移到Asp.Net Webforms/MVC 5.2.2/Framework 4.5.1

我遵循了这些链接中概述的步骤:

在visual studio中运行应用程序时,出现以下错误:

尝试使用安全透明方法 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' 访问安全关键方法的步骤 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)“”失败

我尝试了在StackOverflow上找到的这些建议,但都没有解决问题:

  • 清除bin文件夹并重新生成
  • 安装Nuget软件包Microsoft.Aspnet.WebHelpers
  • 确保System.web.Mvc和System.web.WebPages的所有web.config引用都指向正确的版本(分别为5.2.2.0和3.0.0.0)
  • 如果您能提供有关如何查找此错误原因的任何建议,我们将不胜感激

    错误的完整堆栈跟踪:

    [MethodAccessException: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed.]
       System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule() +96
       System.Web.WebPages.Administration.PreApplicationStartCode.Start() +41
    
    [InvalidOperationException: The pre-application start initialization method Start on type System.Web.WebPages.Administration.PreApplicationStartCode threw an exception with the following error message: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed..]
       System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +559
       System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132
       System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +102
       System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
       System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516
    
    [HttpException (0x80004005): The pre-application start initialization method Start on type System.Web.WebPages.Administration.PreApplicationStartCode threw an exception with the following error message: Attempt by security transparent method 'System.Web.WebPages.Administration.SiteAdmin.RegisterAdminModule()' to access security critical method 'System.Web.WebPages.ApplicationPart..ctor(System.Reflection.Assembly, System.String)' failed..]
       System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9913572
       System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
       System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254
    

    当我遇到这个问题时,我还必须删除obj文件夹的内容。

    问题是web应用程序引用了System.web.Administration.dll的(Framework 1)版本,我认为这是因为几年前当应用程序从web表单移动到混合webforms/MVC 3时需要引用


    我删除了这个引用,问题就消失了。显然,这个dll已不再使用。我假设运行时正在从该dll获取冲突版本的System.Web.Administration,而不是使用新版本

    我在Asp.NETWebForms/MVC5.2.2/Framework 4.5.1上遇到了相同的错误。当我发布到Azure时(它在本地主机上运行良好)

    从中获得的溶液为:

  • 安装软件包Microsoft.AspNet.WebHelpers。从包管理控制台运行以下命令:

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


  • 选中位于Publish…->设置->文件发布选项


  • 我已从模板创建了一个新网站,当该网站发布到Azure时出现此错误。我已经选中了“删除额外文件”和“预编译”,它们在默认情况下是未选中的,这很有帮助。我没有尝试任何其他选项。

    您尝试过安装Microsoft.AspNet.WebPages.Data包吗?是的,安装了Microsoft.AspNet.WebPages.Data包。谢谢您的建议,但删除obj文件夹并不能解决此问题。我已经删除了obj、bin和框架的临时ASP.net文件,甚至尝试重新启动。这个答案只为我节省了几个小时。Thankshow您删除了引用吗?@e4rthdog,在解决方案资源管理器中展开“引用”节点,找到System.Web.Administration.dll,右键单击它,选择“删除”,我遇到了大致相同的错误,我必须删除的引用是System.Web.WebPages.Administration。请注意,它是“.WebPages”,这与上面的不同。不同的DLL会导致相同的错误吗?在被迫更新依赖项之后,我也有同样的错误,但我找不到罪魁祸首。您将如何查找框架不匹配?“在目标位置删除其他文件”是导致我出现问题的原因。我认为默认的Azure ASP.NET Web应用程序中有一些较旧的DLL需要删除。