【问题标题】:Attempt by method 'HttpConfiguration..ctor(HttpRouteCollection)' to access method 'HttpConfiguration.DefaultFormatters()' failed尝试通过方法 'HttpConfiguration..ctor(HttpRouteCollection)' 访问方法 'HttpConfiguration.DefaultFormatters()' 失败
【发布时间】:2017-08-15 18:36:21
【问题描述】:

我有一个安装了 Microsoft.AspNet.WebApi.Client 包的 5.1.2 版的 Web API。

我正在尝试从 ASP.NET MVC 应用程序访问 API,该应用程序也安装了相同版本的包。

但是,在 Web API 项目的 Global.asax 中,在下面的行中,我得到以下异常:

WebApiConfig.Register(GlobalConfiguration.Configuration);

尝试通过方法“System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)”访问方法“System.Web.Http.HttpConfiguration.DefaultFormatters()”失败。 em>

【问题讨论】:

  • 根据this recent SO question,通过从 nuget 更新库修复了相同的错误。 MVC 和 Web API 包之间可能存在某种(不)兼容性。值得一试,我猜...
  • 我也遇到这样的错误你有解决办法吗?

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


【解决方案1】:

我发现当您有多个项目指向不同的 .net 版本时会发生此错误。

例如,如果您有一个针对 .net 4.5 的 Web API 项目和一个针对 .net 4.5.3 的单元测试项目,那么默认设置似乎意味着 nuget 可能会在某天默默地将 .net 4.5 项目引用更新为不兼容的版本打开 Visual Studio 并导致您的 Web API 项目失败,并出现“通过方法 'HttpConfiguration..ctor(HttpRouteCollection)' 尝试访问方法 'HttpConfiguration.DefaultFormatters()' 失败”错误。

为避免错误,将更高版本的 .net 版本放回新项目以匹配 Web API 项目 - 对于此示例,右键单击单元测试项目,单击属性,然后将目标框架更改为 .net 框架 4.5。

【讨论】:

    【解决方案2】:

    在我的情况下,Microsoft.AspNet.WebApi.ClientMicrosoft.AspNet.WebApi.Core 的版本之间存在差异,我尝试将两者都更新到相同的版本,并且成功了。

    【讨论】:

      【解决方案3】:

      在我的情况下,当我安装 Microsoft.AspNet.WebApi.Core 时问题也得到了解决。所以三个库应该存在并且和谐(卸载/安装)Microsoft.AspNet.WebApi.ClientMicrosoft.AspNet.WebApi.CoreNewtonsoft.json

      【讨论】:

        【解决方案4】:

        在我的情况下,上述答案也一样,在更新或重新安装软件包后也可以正常工作

        Microsoft.AspNet.WebApi.Client
        Microsoft.AspNet.WebApi.Core
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2011-10-27
          • 1970-01-01
          • 2013-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多