1

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 を登録し、それを試みるときに何が間違っているのかを理解することです。

4

1 に答える 1