【问题标题】:WebAPI OData 5.0 Beta - Accessing GlobalConfiguration throws Security ErrorWebAPI OData 5.0 Beta - 访问 GlobalConfiguration 引发安全错误
【发布时间】:2013-08-23 05:26:27
【问题描述】:

我最近安装了 WebApi OData 5.0 框架的预发布版本,以使用新的 $expand 支持。一切正常,但我在 App_Start 上遇到了一个奇怪的异常。

Attempt by security transparent method
'System.Web.Http.GlobalConfiguration.get_Configuration()' 
to access security critical type 'System.Web.Http.HttpConfiguration' failed.

来源错误:

Line 12:    protected void Application_Start()
Line 13:    {
Line 14:        WebApiConfig.Register(GlobalConfiguration.Configuration); // <--
Line 15:    }

堆栈跟踪:

[TypeAccessException: Attempt by security transparent method 'System.Web.Http.GlobalConfiguration.get_Configuration()' to access 
security critical type 'System.Web.Http.HttpConfiguration' failed.]
   System.Web.Http.GlobalConfiguration.get_Configuration() +0
   API.WebApiApplication.Application_Start() in Global.asax.cs:14

[HttpException (0x80004005): Attempt by security transparent method 'System.Web.Http.GlobalConfiguration.get_Configuration()' to access 
security critical type 'System.Web.Http.HttpConfiguration' failed.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +12863325
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +175
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +304
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +404
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +475

[HttpException (0x80004005): Attempt by security transparent method 'System.Web.Http.GlobalConfiguration.get_Configuration()' to access 
security critical type 'System.Web.Http.HttpConfiguration' failed.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12880068
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12721257

谷歌透露的很少。

【问题讨论】:

    标签: asp.net-mvc-4 asp.net-web-api odata


    【解决方案1】:

    您只需在 VS 解决方案的包管理器控制台中运行命令“update-package Microsoft.AspNet.WebApi”

    【讨论】:

      【解决方案2】:

      我遇到了同样的错误。我只是稍微调整了 Ravi 的答案,发现通过更新/安装 WebApi.OData 5.0.0-rc1 包来更新 WebApi 包对我来说效果很好。我刚刚在包管理器上运行了这些:

      Update-Package Microsoft.AspNet.WebApi -Pre
      Install-Package Microsoft.AspNet.WebApi.OData -Version 5.0.0
      

      我猜测 WebApi.OData 包的预发布版本与较新版本的 WebApi 包有一些依赖关系,Nuget 无法将其作为依赖项进行检查。再说一次,从技术上讲,我是 WebApi OData 的新手,对这些包还不太了解,但是,是的,我可以使用 $expand 和 $select 功能运行项目,并且没有 GlobalConfiguration 错误。 :)

      【讨论】:

        【解决方案3】:

        在包管理器控制台中按给定顺序运行以下命令:

        Uninstall-Package Microsoft.AspNet.Mvc.FixedDisplayModes
        Update-Package Microsoft.AspNet.Mvc -Pre
        Update-Package Microsoft.AspNet.WebApi -Pre
        Update-Package Microsoft.AspNet.WebApi.Tracing
        

        现在,对 web.config 应用以下更改:

        1. 在您项目的 Web.config 中,将应用设置 pages:version 的值更新为 3.0.0.0

        2. 在 web.config 中的运行时部分下,检查配置的每个程序集的版本,并将其更新为添加到项目中的程序集版本。以下是我的 web.config 中的更新配置:
































        从 Views 文件夹中打开 web.config。这里要更新三件事:

        1. 在 configSections 下,将 Razor 程序集的版本更新为 3.0.0.0。

        2. 更新 system.web.webPages.razor 部分下的主机版本,将 System.Web.Mvc.MvcWebRazorHostFactory 的版本更新为 3.0.0.0。

        3. System.web 的页面部分下提到了一些版本号。将它们全部更新到版本 5.0.0.0

        如果您安装了 Web API 帮助页面,请检查上面的程序集配置。

        【讨论】:

        • Command Update-Package Microsoft.AspNet.Mvc -Pre 给我以下错误 Update-Package : Updating 'Microsoft.AspNet.Mvc 4.0.20710.0' to “Microsoft.AspNet.Mvc 5.0.0-rc1”失败。找不到与“Microsoft.AspNet.Mvc 5.0.0-rc1”兼容的“Microsoft.AspNet.WebApi.HelpPage”版本。
        【解决方案4】:

        我不确定确切的原因是什么,但是当 nuget 包之一是旧版本(非预发布)时,我通常会看到此错误。您能否尝试升级所有 nuget 包,看看是否会消失。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-25
          • 2016-01-24
          • 1970-01-01
          • 2013-02-03
          • 2016-03-14
          • 1970-01-01
          • 2015-12-29
          • 2014-09-07
          相关资源
          最近更新 更多