【问题标题】:Attempt by method ... HttpConfiguration ... to access method ... DefaultFormatters ... failed尝试按方法 ... HttpConfiguration ... 访问方法 ... DefaultFormatters ... 失败
【发布时间】:2015-01-05 13:18:23
【问题描述】:

我在进行一些项目重组后遇到以下错误,我无法确定问题所在。

Server Error in '/' Application.
Attempt by method 'System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)' to access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.MethodAccessException: Attempt by method 'System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)' to access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed.

Source Error:


Line 15:          routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );
Line 16: 
Line 17:          routes.MapHttpRoute(
Line 18:              name: "DefaultApi",
Line 19:              routeTemplate: "api/{controller}/{action}",


Source File: c:\Dev\MyProject\Branches\Phase.2.3-Sprint 16\Client\ManagementSite\App_Start\RouteConfig.cs    Line: 17

Stack Trace:


[MethodAccessException: Attempt by method 'System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)' to access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed.]
   System.Web.Http.HttpConfiguration..ctor(HttpRouteCollection routes) +53
   System.Web.Http.GlobalConfiguration.<.cctor>b__0() +54
   System.Lazy`1.CreateValue() +416
   System.Lazy`1.LazyInitValue() +152
   System.Lazy`1.get_Value() +75
   System.Web.Http.GlobalConfiguration.get_Configuration() +27
   System.Web.Http.RouteCollectionExtensions.MapHttpRoute(RouteCollection routes, String name, String routeTemplate, Object defaults, Object constraints, HttpMessageHandler handler) +67
   System.Web.Http.RouteCollectionExtensions.MapHttpRoute(RouteCollection routes, String name, String routeTemplate, Object defaults) +18
   MyProjectManagementSite.RouteConfig.RegisterRoutes(RouteCollection routes) in c:\Dev\MyProject\Branches\Phase.2.3-Sprint 16\Client\ManagementSite\App_Start\RouteConfig.cs:17
   MyProjectManagementSite.MvcApplication.Application_Start() in c:\Dev\MyProject\Branches\Phase.2.3-Sprint 16\Client\ManagementSite\Global.asax.cs:26

[HttpException (0x80004005): Attempt by method 'System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)' to access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed.]
   System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9905705
   System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
   System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
   System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +336
   System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +296

[HttpException (0x80004005): Attempt by method 'System.Web.Http.HttpConfiguration..ctor(System.Web.Http.HttpRouteCollection)' to access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed.]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9885060
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254


Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34009 

我将所有项目绑定到 .Net 4.5,并将 Newtonsoft Json.Net 设置为 6.0.1(而不是最新的 6.0.7)。当我构建我的 web 项目时,我收到一个警告“发现同一依赖程序集的不同版本之间的冲突”,如果我运行一些借用的代码来列出这些潜在的冲突,似乎 Newtonsoft 的 4.5 和 6.0 版本之间可能存在冲突:

Possible conflicts for System.Net.Http:
System.Net.Http.Formatting references System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.ServiceModel       references System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Web.Http           references System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
System.Web.Http.WebHost   references System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
MyProjectManagementSite  references System.Net.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
MyProjectManagementSite  references System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a

Possible conflicts for Newtonsoft.Json:
System.Net.Http.Formatting references Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
System.Web.Http           references Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
MyProject.Base           references Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
MyProjectManagementSite  references Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed

以上是否显示了可能的原因,我该如何解决?

【问题讨论】:

  • access method 'System.Web.Http.HttpConfiguration.DefaultFormatters()' failed?还将您的本地版本与源代码管理中的工作版本进行比较,以查看参考更改。
  • 是的,我在发布之前已经根据 StackOverflow 提示检查了那篇文章 - WebApi 已经安装且未更改。重新运行安装,没有任何修复。比较了两个 csproj 文件(当前与早期的源代码控制版本),看不到任何我个人认为可能存在问题的东西。

标签: asp.net-mvc


【解决方案1】:

卸载 WebApi 并再次重新安装(通过 Nuget),问题就消失了

【讨论】:

  • 是的!在我使用 install-package ... -V 5.2.2 更新软件包版本后,我遇到过这种情况,并且在卸载并重新安装 webapi 软件包后,一切都解决了
  • 很可能是版本问题。当我尝试通过 Web API 客户端 5.x 版访问 Web API 4.0 版时遇到了同样的问题
【解决方案2】:

很可能是版本问题,我遇到了同样的问题,通过将Microsoft.AspNet.WebApi.WebHost 包更新到最新版本来解决

【讨论】:

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