ASP.NET MVC 4、WebAPI、およびその他のコンポーネントを使用して構築したレイヤード Web アプリケーションがあります。MVC と WebAPI の統合と共に、Autofac 2.6.2.859 の最新リリースを DI コンテナーとして使用しています。さまざまなレイヤーに autofac モジュールをセットアップしており、新しい RegisterAssemblyModules を使用して、さまざまなモジュールの AppDomain アセンブリをスキャンしています。
起動時に、すべてがうまく機能します。web.config ファイルを編集してアプリケーションがウォームアップすると、登録が失われます。DependencyResolutionException を取得します -
タイプ 'My.Class.Name' の 'Public binding flags' で見つかったコンストラクターは、利用可能なサービスとパラメーターで呼び出すことができません。
したがって、私の登録はリロードされていません。この問題に対処する方法を知っている人はいますか? 初期化コードを Application_Start() 以外の場所に配置する必要がありますか?
アップデート
私のコードは次のようになります
public static class IoC
{
public static void Configure()
{
var builder = new ContainerBuilder();
var assemblies = AppDomain.CurrentDomain.GetAssemblies();
//Assembly Modules
builder.RegisterAssemblyModules<NSUTriviaModuleBase>(assemblies);
// Register API controllers using assembly scanning.
builder.RegisterControllers(assemblies);
// Register API controllers using assembly scanning.
builder.RegisterApiControllers(assemblies);
var container = builder.Build();
// Set the dependency resolver implementation.
var resolver = new AutofacWebApiDependencyResolver(container);
GlobalConfiguration.Configuration.DependencyResolver = resolver;
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}