ASP.NET WebAPIカスタムControllerSelector

2298 ワード

ええと...今日同僚はクライアントが異なるバージョンのControllerを呼び出す機能を実現しなければならなくて、実はいくつかのコードは終わりました..
まず、独自の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));