В приложении mvc, как вы можете использовать IHttpControllerSeelector по умолчанию, если пользовательское приложение не соответствует URL-пути
Я прочитал эту статью, чтобы попытаться создать версионный контроллер webapi, используя пространство имен:
http://blogs.msdn.com/b/webdev/archive/2013/03/08/using-namespaces-to-version-web-apis.aspx
Я не хочу нарушать существующие маршруты, поэтому для меня очень важно быть обратно совместимым.
и в конечной ноте звучит тривиально - использовать стандартную, если маршруты не совпадают, но для меня это не тривиально. Если вы можете помочь, это было бы здорово.
Спасибо
1 ответ
Решение
Предполагая, что вы используете код, указанный в статье, вы можете сделать это в методе 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.