2014-01-14 7 views
0

У меня есть WebAPI проект, основанный на WebAPI v1, который использует следующие определения версии API для использования ...Versioning в WebApi2 используя атрибут Routing

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() не содержит ссылки (которые я могу найти) на контроллер.

Означает ли это, что я ограничен версиями, включив версию в сам маршрут?

ответ

0

Вы можете проверить мой ответ на следующее сообщение:

Versioning ASP.NET Web API 2 with Media Types

Кроме того, в скором времени прийти выпуск Web API 2.1 (сборка версии 5.1.0.0), есть поддержка ограничений маршрута уровня (обратите внимание, что это отличается от ограничений «встроенного», которые у нас уже есть), с которыми вы можете справляться с версиями сценариев. Конечно, это связано только с маршрутизацией атрибутов.

Ниже приведен образец с битами 2.1 RC: http://aspnet.codeplex.com/SourceControl/latest#Samples/WebApi/RoutingConstraintsSample/ReadMe.txt

 Смежные вопросы

  • Нет связанных вопросов^_^