Move to Web API RC, Get: Method not found: 'Sy

2019-07-20 16:01发布

I moved a site from WebAPI Beta to WebAPI RC, and am now getting an error upon loading the site: Method not found: 'System.Web.Http.Services.DependencyResolver System.Web.Http.HttpConfiguration.get_ServiceResolver()'.

The error occurs the first time that I am trying to register my AutoFacWebApiDependencyResolver (per instructions here):

var resolver = new AutofacWebApiDependencyResolver(IoCManager.Container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;

The stacktrace shows the following:

[MissingMethodException: Method not found: 'System.Web.Http.Services.DependencyResolver System.Web.Http.HttpConfiguration.get_ServiceResolver()'.]
   System.Web.Http.GlobalConfiguration.<.cctor>b__0() +0
   System.Lazy`1.CreateValue() +12775823
   System.Lazy`1.LazyInitValue() +355
   StatusBoard.Web.MvcApplication.RegisterDependencyInjection() in C:\path-tp-app\Global.asax.cs:125
   StatusBoard.Web.MvcApplication.Application_Start() in C:\path-to-app\Global.asax.cs:75

Based on this, it appears that the error is occurring during initialization of the static GlobalConfiguration class. When I drill down into the source for that class, I see the following:

private static Lazy<HttpConfiguration> _configuration = new Lazy<HttpConfiguration>((Func<HttpConfiguration>) (() =>
{
  local_0 = new HttpConfiguration((HttpRouteCollection) new HostedHttpRouteCollection(RouteTable.Routes));
  local_0.get_ServiceResolver().SetService(typeof (IBuildManager), (object) new WebHostBuildManager());
  return local_0;
}));
private static Lazy<HttpControllerDispatcher> _dispatcher = new Lazy<HttpControllerDispatcher>((Func<HttpControllerDispatcher>) (() => new HttpControllerDispatcher(GlobalConfiguration._configuration.Value)));

public static HttpConfiguration Configuration
{
  get
  {
    return GlobalConfiguration._configuration.Value;
  }
}

The fourth line here seems to be the issue - it is trying to call a get_ServiceResolver() method that no longer exists in the HttpConfiguration class (should be DependncyResolver instead, probably).

Is this just a bug with the RC for WebAPI? Is there some way that I can get around this? Or am I stuck in some DLL/Nuget hell (and if so, how can I extricate myself)?

2条回答
贼婆χ
2楼-- · 2019-07-20 16:17

Dependency Resolution has been completely re-written in RC. Best is to uninstall beta DLLs and then your problems most likely go away.

Just uninstall the one flagged as "(bundle)" in windows' "Uninstall a program".

查看更多
虎瘦雄心在
3楼-- · 2019-07-20 16:24

be sure to include the correct nuget package (RC!) and install the new mvc4rc on the machine where you build your package.

查看更多
登录 后发表回答