ApiController から派生したすべてのクラスが登録され、アクセス可能である理由を理解できません。私は2つのApiControllersを持っています:
MasterController : ApiController
SlaveController : ApiController
そして、これがコンテナでサーバーをセットアップする方法です
Action<IAppBuilder> appBuilderAction = appBuilder => {
var httpConf = new HttpConfiguration();
httpConf.DependencyResolver = new AutofacWebApiDependencyResolver(container);
httpConf.Routes.MapHttpRoute("DefaultApi", "api/v1/{controller}/{action}", new { action = "get" });
appBuilder.UseWebApi(httpConf);
};
return WebApp.Start(baseAddress, appBuilderAction);
NUnit テストを作成するときに私が抱えている問題は、1 つのコントローラーのみを登録しようとしても、テスト中に両方にアクセスできることです。たとえば、MasterController のみを登録する場合、この URL が有効であることが期待されます (マスター)
var response = await client.GetAsync(new Uri(http://localhost:8080, "api/v1/master/mytest"));
そして、私に404(スレーブ)を与えるこのURL
var response = await client.GetAsync(new Uri(http://localhost:8080, "api/v1/slave/mytest"));
しかし、代わりに両方とも機能します。私は autofac ですべてのタイプの異なる登録を試みましたが、それらはすべて、私が欲しいものだけでなく、すべての ApiControllers を登録しているようです。何が欠けていますか?
var cb = new ContainerBuilder();
// tried this one and added alot of .where´s to try and filter on it
cb.RegisterApiControllers(typeof (MasterController).Assembly);
// tried many different version, dont have to list them all since obviously im missing something
cb.RegisterType<MasterController>();
cb.RegisterType(typeof(MasterController));
var container = cb.Build();
私の目標は、テスト中にのみ MasterController を登録し、それを試みるときに何が間違っているのかを理解することです。