0

DDDレイヤーのアプリケーションがあるので、Asp.Net MVC 4プロジェクトとWebApiプロジェクト(プレゼンテーションレイヤーに2つのプロジェクト)の両方が含まれています。

Asp.Net MVC 4=okでAutofacを追加するAsp.NetWebApiでAutofacを追加する=okではない

これは、私のasp.netWebAPIからの私のglobal.asax.csです。

var configuration = GlobalConfiguration.Configuration;
var builder = new ContainerBuilder();

// Configure the container with the integration implementations.
// builder.ConfigureWebApi(configuration);
builder.RegisterWebApiFilterProvider(configuration);

// Register API controllers using assembly scanning.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());

builder.RegisterType(typeof(UnitOfWork)).As(typeof(IUnitOfWork)).InstancePerLifetimeScope()
    .OnRelease(x => { ((IUnitOfWork)x).Commit(); });
builder.RegisterType(typeof(DatabaseFactory)).As(typeof(IDatabaseFactory)).InstancePerLifetimeScope().AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(UserRepository).Assembly).Where(t => t.Name.EndsWith("Repository")).AsImplementedInterfaces();
builder.RegisterAssemblyTypes(typeof(SecurityService).Assembly).Where(t => t.Name.EndsWith("Service")).AsImplementedInterfaces();
var container = builder.Build();

// Set the dependency resolver implementation.
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.ServiceResolver.SetResolver(resolver);

私が見ているエラーは次のとおりです:アセンブリ'System.Web.Http、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'からタイプ'System.Web.Http.Dependencies.IDependencyResolver'を読み込めませんでした。コードの一部を3回書き直してみましたが、うまくいかないようです。

いくつかのブログへのリンクはすでに見つかりましたが、ほとんどの場合、それらにはへの参照が含まれてbuilder.ConfigureWebApi(configuration);おり、新しいバージョンには存在しません。

これをどのように解決できるかについて何か考えはありますか?

4

2 に答える 2

1

リゾルバーに加えて、コントローラーファクトリが必要になります。autofac用のコントローラーファクトリを作成した経験はありません(私の経験はウィンザーです)が、簡単なはずです。あなたはそのように使いたいですconfiguration.DependancyResolver

configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);

ファクトリを作成したら、それを割り当てることができます。

ControllerBuilder.Current.SetControllerFactory(yourfactory);
于 2012-10-08T19:45:29.253 に答える
0

RTWバージョンでは、依存関係リゾルバーがプロパティを介して設定されるため、プレリリースバージョンのWebAPIを使用しているようです。

var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;

Web APIのRTWバージョンであり、Autofac統合用の最新のNuGetパッケージであることを確認してください。

Install-Package Autofac.WebApi

于 2012-10-09T12:22:00.863 に答える