呃..今天同事要实现客户端调用不同版本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));