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

时间:2013-08-27 22:14:19

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

我创建了一个包含两个项目的解决方案: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?

7 个答案:

答案 0 :(得分:25)

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

  1. 从NuGet安装最新的WebAPI

    -OR -

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

答案 1 :(得分:12)

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

答案 2 :(得分:11)

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

install-package 'Microsoft.AspNet.WebApi.OData -pre

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

我的建议是使用"清空ASP.NET网络应用程序"模板而不是MVC 4.0模板。

答案 3 :(得分:3)

您是否需要预发布版本的Web API OData?如果是这样,您需要更新所有其他Web API包以匹配该版本。 如果没有,就这样做,

install-package 'Microsoft.AspNet.WebApi.OData

没有-pre选项

答案 4 :(得分:2)

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

答案 5 :(得分:0)

我遇到了一个问题,我注意到,以前的服务器代码是使用Release模式构建的,而我正在使用Debug模式代码进行上传。 因此,我替换为发布模式,然后问题解决了。

答案 6 :(得分:0)

如果以上回答中不存在此软件包,则可以安装

安装软件包Microsoft.AspNet.WebApi