28

我创建了一个包含两个项目的解决方案:一个 MVC 4 和一个类库。该解决方案编译并运行良好。然后我 install-package '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?

4

7 回答 7

32

这是给定 WebAPI 版本的程序集不匹配。我的失败是因为我引用了不匹配的System.Web.Http.WebHost. 这样你就可以...

  1. 从 NuGet 安装最新的 WebAPI

    -或者-

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

于 2014-09-25T20:05:07.877 回答
16

我在 VS 的包管理器控制台中运行了“update-package Microsoft.AspNet.WebApi”,效果非常好。

于 2016-07-23T00:16:22.523 回答
11

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

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

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

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

于 2013-08-28T09:25:37.653 回答
4

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

于 2020-05-18T19:54:16.470 回答
3

Do you need the pre-release version of web API OData? If so, you need to update all the other web API packages to match that version. If not, just do,

install-package 'Microsoft.AspNet.WebApi.OData

without the -pre option

于 2013-08-27T23:09:08.133 回答
2

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

安装包 Microsoft.AspNet.WebApi

于 2020-06-20T12:35:43.583 回答
0

我遇到了问题,我注意到以前的服务器代码使用发布模式构建,我正在上传使用调试模式代码的构建。所以,我用发布模式替换,然后问题就解决了。

于 2020-02-24T10:37:02.637 回答