14
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.ServiceResolver.SetResolver(resolver);

ASP.NET MVC4(RC)に更新した後、次のエラーが発生します。

「System.Web.Http.HttpConfiguration」には「ServiceResolver」の定義が含まれておらず、「System.Web.Http.HttpConfiguration」タイプの最初の引数を受け入れる拡張メソッド「ServiceResolver」が見つかりませんでした(usingディレクティブがありませんか?またはアセンブリリファレンス?)

これ(http://www.asp.net/web-api/overview/extensibility/using-the-web-api-dependency-resolver)を読んだ後、これらのインターフェイスが変更されたことに気付きましたが、適用方法がわかりませんAutofacの使用方法に対するこの変更。

Autofacからの新しいリリースを待つ必要がありますか、それともこれを乗り越えることができる別の方法がありますか?

4

3 に答える 3

5

編集: 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);
于 2012-06-03T12:12:18.320 に答える
4

AutoFac.WebApiパッケージが(RC)に更新されました-バージョン2.6.2.859

これは、RCとベータ間の依存関係の変更に合わせて調整されているようです

于 2012-06-07T14:42:11.927 に答える
0

上記の解決策を試しましたが、うまくいきませんでした。これらの2つの特定のパッケージを削除して再インストールすると、問題が解決しました。

Microsoft.AspNet.WebApi.Tracing
Microsoft.AspNet.WebApi.OData
于 2016-04-07T10:40:40.263 に答える