0
我有根据的WebAPI V1一个项目的WebAPI使用以下确定使用API的版本...版本中WebApi2
public override HttpControllerDescriptor SelectController(HttpRequestMessage request)
{
var controllers = GetControllerMapping();
var routeData = request.GetRouteData();
var controllerName = (string)routeData.Values["controller"];
HttpControllerDescriptor result = null;
if (!controllers.TryGetValue(controllerName, out result))
{
string version;
if (!GetVersionFromMediaType(request, out version))
{
if (!GetVersionFromAcceptHeaderVersion(request, out version))
{
if (!GetVersionFromHeader(request, out version))
{
if (!GetVersionFromQueryString(request, out version))
{
version = LATEST_VERSION;
}
}
}
}
HttpControllerDescriptor versionedDescriptor;
var newName = string.Concat(controllerName, "V", version);
if (controllers.TryGetValue(newName, out versionedDescriptor))
{
result = versionedDescriptor;
}
}
return result;
}
我敲了使用测试WebApi2我注意到,如果我已经使用属性路由定义了我的路由,则此过程失败,因为request.GetRouteData()
不包含任何对控制器的引用(我可以找到)。
这是否意味着我仅限于通过在路由本身中包含版本来进行版本控制?