ASP.NET WebAPI 사용자 정의 ControllerSelector

2324 단어 controller
으윽..오늘 동료는 클라이언트가 서로 다른 버전의 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();

        }

    }

그리고 초기화가 완료되면 기본 ConrollerSelector를 자기가 정의한 ControllerSelector로 바꾸면 됩니다
var config = new HttpSelfHostConfiguration("http://localhost:8080");

            config.Services.Replace(typeof(IHttpControllerSelector), new ShadowControllerSelector(config));

 
 

좋은 웹페이지 즐겨찾기