ASP.NET WebAPIカスタムControllerSelector
2298 ワード
ええと...今日同僚はクライアントが異なるバージョンのControllerを呼び出す機能を実現しなければならなくて、実はいくつかのコードは終わりました..
まず、独自のControllerSelectorを定義します.コードは次のとおりです.
初期化が完了したら、デフォルトのコントローラを自分で定義したコントローラに置き換えるだけです.
まず、独自のControllerSelectorを定義します.コードは次のとおりです.
public class ShadowControllerSelector : IHttpControllerSelector
{
private readonly HttpConfiguration _configuration;
public ShadowControllerSelector(HttpConfiguration configuration)
{
_configuration = configuration;
}
public HttpControllerDescriptor SelectController(HttpRequestMessage request)
{
return new HttpControllerDescriptor(_configuration, "Products2Controller", typeof(Products2Controller));
}
public IDictionary<string, HttpControllerDescriptor> GetControllerMapping()
{
throw new NotImplementedException();
}
}
初期化が完了したら、デフォルトのコントローラを自分で定義したコントローラに置き換えるだけです.
var config = new HttpSelfHostConfiguration("http://localhost:8080");
config.Services.Replace(typeof(IHttpControllerSelector), new ShadowControllerSelector(config));