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