如何解决错误"安全透明方法尝试"System.Web.Http.GlobalConfiguration.get_Configuration()

Dan*_*iel 22 odata asp.net-mvc-4 asp.net-web-api

我创建了一个包含两个项目的解决方案:MVC 4和类库.该解决方案编译并运行良好.然后我安装包'Microsoft.AspNet.WebApi.OData -pre来引入OData WebApi功能.当我这样做时,我在运行时收到以下错误:

试图通过安全透明方法"System.Web.Http.GlobalConfiguration.get_Configuration()"来访问安全关键类型"System.Web.Http.HttpConfiguration"失败.

当WebApiConfig.Register(GlobalConfiguration.Configuration)在Global.asax中运行时

一旦我这样做,卸载软件包似乎没有解决.它显然删除了OData组件,但随后留下了导致此问题的任何组件.使用-RemoveDependencies删除会删除库中的所有WebApi引用,并且我无法将其恢复到工作状态.

我到底包含什么包,如何在vanilla MVC4应用程序中启用WebApi OData?

Nex*_*xas 27

对于给定版本的WebAPI,它与程序集不匹配.我的失败是因为我引用了一个不匹配的版本System.Web.Http.WebHost.所以你可以...

  1. 从NuGet安装最新的WebAPI

    -要么-

  2. 确保所有Microsoft.AspNet.WebApi.*包都在同一版本上


小智 13

我在VS的软件包管理器控制台中运行了"update-package Microsoft.AspNet.WebApi",并且像魅力一样工作.


Ali*_*tad 11

如果您从其模板创建MVC 4应用程序,那么您正在安装Web API 4.0.如果你使用

install-package 'Microsoft.AspNet.WebApi.OData -pre
Run Code Online (Sandbox Code Playgroud)

您将依赖于ASP.NET Web API 5.0 rc.

我的建议是使用"Empty ASP.NET web application"模板而不是MVC 4.0模板.

  • 这让我走上正轨.我最后做了Install-Package Microsoft.AspNet.WebApi -Pre,很高兴. (6认同)
  • 在VS2012 Web API模板上安装“ Microsoft.AspNet.WebApi.Cors”并编辑“ WebApiConfig.Register”后,出现相同的错误。升级到VS2013模板后,所有功能均正常运行。 (2认同)

小智 5

我遇到了同样的问题,修复方法是使用与 Syste.Web.Http 相同版本的“System.Web.Http.WebHost”,即 5.2.6