我正在尝试使用ASP.NET Web API进行版本控制。我创建了一个简单的controllerselector,它派生自DefaultHttpControllerSelector。
public class MyHttpControllerSelector : DefaultHttpControllerSelector
{
public MyHttpControllerSelector(HttpConfiguration config) : base(config) { }
public override string GetControllerName(HttpRequestMessage request)
{
return "SomeControllerName";
}
}
在我的WebApiConfig.Register中:
config.MapHttpAttributeRoutes();
config.Services.Replace(typeof(IHttpControllerSelector), new MyHttpControllerSelector(config));
我的问题是从不调用GetControllerName。我可能误解了这个函数的意图,但是我看到了很多例子,有些是微软使用这种方法的。
我错过了什么?
答案 0 :(得分:0)
在我的情况下,这是因为我没有调用config.Routes.MapHttpRoute()。我刚刚使用属性路由。一旦我使用MapHttpRoute(),它似乎开始调用GetControllerName。