我创建了一个包含两个项目的解决方案: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?
答案 0 :(得分:25)
对于给定版本的WebAPI,它的程序集不匹配。我的失败是因为我引用了System.Web.Http.WebHost
的不匹配版本。所以你可以......
从NuGet安装最新的WebAPI
-OR -
确保所有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