在同一個項目中,我有兩個類似的啓動類是這樣的:如何通過名稱空間限制Asp.net Web API/Owin發現控制器?
namespace X.A
{
public class AStartup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.EnsureInitialized();
appBuilder.UseWebApi(config);
}
}
}
和
namespace X.B
{
public class BStartup
{
public void Configuration(IAppBuilder appBuilder)
{
HttpConfiguration config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.EnsureInitialized();
appBuilder.UseWebApi(config);
}
}
}
我也有幾個控制器,有些是在命名空間XA ..:
namespace X.A.SomePlace
{
[RoutePrefix("A/SomeRouting")]
public class Controller1 : ApiController
{
[Route("SomeMethod")]
[HttpPost]
[ResponseType(typeof(SomeMethodResponse))]
public IHttpActionResult GetParameters([FromBody] SomeMethodRequest request)
{
// Some code
}
}
}
...和其他名稱空間XB ..:
namespace X.B.SomeOtherPlace
{
[RoutePrefix("B/AnotherRouting")]
public class Controller2 : ApiController
{
[Route("AnotherMethod")]
[HttpPost]
[ResponseType(typeof(AnotherMethodResponse))]
public IHttpActionResult AnotherMethod([FromBody] AnotherMethodRequest request)
{
// Another code
}
}
}
...和所有控制器都在同一個Asssembly中。
目前,各控制器自動的獲得註冊這兩個API。 我想,以限制命名空間中的控制器發現(即AStartup登記從X.A所有控制器....和BStartup登記從X.B所有控制器......)
有沒有辦法用MapHttpAttributeRoutes做到這一點?
我會還高興不使用屬性的路由另一種方法(即如果你有一個方法,在那裏我有編程,以明確地登記每個控制器,將工作對我罰款)。
各種控制器有不同的名稱空間,但都在同一個程序集(將更新問題以反映此)。你認爲仍然可以使用CustomAssemblyResolver來實現這個過濾嗎? – Ramsey
嗯,不確定。他們不能在不同的集會中有一個原因嗎? – peco