Asp.net mvc 4 如何解决此错误;尝试使用安全透明方法';System.Web.Http.GlobalConfiguration.get_Configuration()

Asp.net mvc 4 如何解决此错误;尝试使用安全透明方法';System.Web.Http.GlobalConfiguration.get_Configuration(),asp.net-mvc-4,asp.net-web-api,odata,Asp.net Mvc 4,Asp.net Web Api,Odata,我用两个项目创建了一个解决方案:MVC4和类库。该解决方案编译并运行良好。然后,我安装包“Microsoft.AspNet.WebApi.OData-pre”以引入OData WebApi功能。当我这样做时,在运行时会出现以下错误: 安全透明方法“System.Web.Http.GlobalConfiguration.get_Configuration()”尝试访问安全关键类型“System.Web.Http.HttpConfiguration”失败 当WebApiConfig.Register

我用两个项目创建了一个解决方案:MVC4和类库。该解决方案编译并运行良好。然后,我安装包“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引用,我无法使其恢复工作状态


我到底在哪个软件包中?如何在普通MVC4应用程序中启用WebApi OData?

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

install-package 'Microsoft.AspNet.WebApi.OData

没有
-pre
选项

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

install-package 'Microsoft.AspNet.WebApi.OData -pre
您将依赖ASP.NET Web API 5.0 rc


我的建议是使用“空ASP.NET web应用程序”模板,而不是MVC4.0模板

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

  • 从NuGet安装最新的WebAPI

    -或-

  • 确保所有
    Microsoft.AspNet.WebApi.
    软件包都在同一版本上


  • 我在VS中的package Manager控制台中运行了“update package Microsoft.AspNet.WebApi”,工作起来很有魅力。

    我遇到了一个问题,我注意到,以前的服务器代码版本采用发布模式,我正在上载版本采用调试模式的代码。
    所以,我将其替换为发布模式,然后问题就解决了。

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

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


    安装Microsoft.AspNet.WebApi软件包

    这将使我走上正轨。我最终完成了安装包Microsoft.AspNet.WebApi-Pre,它很高兴。在VS2012 Web API模板上安装
    Microsoft.AspNet.WebApi.Cors
    并编辑
    WebApiConfig.Register
    后,我收到了相同的错误。升级到VS2013模板后,所有模板均正常工作。