我阅读本文试图使用命名空间创建一个版本化的webapi控制器:
http://blogs.msdn.com/b/webdev/archive/2013/03/08/using-namespaces-to-version-web-apis.aspx
我不想打破现有路线,因此向后兼容对我来说非常重要。
如果路线不匹配,它会在尾注中使用默认值,但这对我来说并不简单。如果你能提供帮助那就太棒了。
感谢
答案 0 :(得分:2)
假设您正在使用Code中提到的Article,您可以在SelectController方法中执行此操作:
public HttpControllerDescriptor SelectController(HttpRequestMessage request)
{
IHttpRouteData routeData = request.GetRouteData();
if (routeData == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
// Get the namespace and controller variables from the route data.
string namespaceName = GetRouteVariable<string>(routeData, NamespaceKey);
if (namespaceName == null)
{
DefaultHttpControllerSelector selector = new DefaultHttpControllerSelector(_configuration);
return selector.SelectController(request);
}
// ... remaining code from article
}
当路由不包含版本参数时,创建DefaultControllerSelector的实例并从其SelectController方法返回值。