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()
不包含任何對控制器的引用(我可以找到)。
這是否意味着我僅限於通過在路由本身中包含版本來進行版本控制?