編集:
James Bradtが以下の投稿で言及しているように、Autofacパッケージはこの問題を修正するために更新されているため、将来このスレッドに出くわす人はおそらく最初に新しいパッケージを試す必要があります:)
基本的に、新しいパッケージでは、global.asax.csでこれを行う必要があります。
GlobalConfiguration.Configuration.DependencyResolver = new Autofac.Integration.WebApi.AutofacWebApiDependencyResolver(container);
/編集
同じ問題に遭遇しました。既存のAutofacDependencyResolverをラップする単純なIDependencyResolver実装を作成することで、自分の状況で問題を解決することができました。
クラス名が示すように、私はこれを一時的な解決策として扱っています-BeginScopeメソッドとDisposeメソッドはいくつかの作業が必要であり、明らかに実稼働環境には適していませんが、これにより適切な解決策が現れるまで開発を続けることができます。
したがって、これらの警告を考慮すると、IDependencyResolverの実装は次のようになります。
public class TemporaryDependencyResolver : IDependencyResolver
{
private readonly AutofacDependencyResolver _autofacDependencyResolver;
public TemporaryDependencyResolver(AutofacDependencyResolver autofacDependencyResolver)
{
_autofacDependencyResolver = autofacDependencyResolver;
}
public void Dispose()
{
}
public object GetService(Type serviceType)
{
return _autofacDependencyResolver.GetService(serviceType);
}
public IEnumerable<object> GetServices(Type serviceType)
{
return _autofacDependencyResolver.GetServices(serviceType);
}
public IDependencyScope BeginScope()
{
return this;
}
}
Global.asax.csで次のように設定します。
var container = builder.Build();
var resolver = new AutofacDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = new TemporaryDependencyResolver(resolver);