Asp.net 在派生的DefaultHttpControllerSelector实现中未调用GetControllerName

Asp.net 在派生的DefaultHttpControllerSelector实现中未调用GetControllerName,asp.net,asp.net-web-api,versioning,Asp.net,Asp.net Web Api,Versioning,我正在尝试使用ASP.NET Web API进行版本控制。我创建了一个从DefaultHttpControllerSelector派生的简单controllerselector public class MyHttpControllerSelector : DefaultHttpControllerSelector { public MyHttpControllerSelector(HttpConfiguration config) : base(config) { } pub

我正在尝试使用ASP.NET Web API进行版本控制。我创建了一个从DefaultHttpControllerSelector派生的简单controllerselector

public class MyHttpControllerSelector : DefaultHttpControllerSelector
{
    public MyHttpControllerSelector(HttpConfiguration config) : base(config) { }

    public override string GetControllerName(HttpRequestMessage request)
    {
        return "SomeControllerName";
    }
}
在my WebApiConfig.Register中:

config.MapHttpAttributeRoutes();

config.Services.Replace(typeof(IHttpControllerSelector), new MyHttpControllerSelector(config));
我的问题是GetControllerName从未被调用。我可能误解了这个函数的意图,但是我已经看到了很多例子,一些来自微软的例子使用了这个方法


我遗漏了什么?

在我的例子中,这是因为我没有调用config.Routes.maphttprote()。我只是在使用属性路由。使用MapHttpRoute()后,它似乎开始调用GetControllerName。

在我的例子中,这是因为我没有调用config.Routes.MapHttpRoute()。我只是在使用属性路由。一旦我使用MapHttpRoute(),它似乎开始调用GetControllerName