2014-01-12 2 views
0

Я пробовал около часа и не нашел примера, поэтому я подумал, что попрошу здесь.WebApi Routing - map url to api

Я заменяю стандартный контроллер mvc webapi и имею проблемы с маршрутизацией, я изменил имена из-за организации, но они все еще действительны.

my webapi в настоящее время называется SystemAPI в папке контроллеров - я хочу, чтобы у него было другое имя, которое указывает на него в идеале.

URL, мне нужно указать к нему/v1Controller/{ID} Я не могу изменить URL v1Controller как это неподвижная точка с приложениями, я не имею никакого контроля над

моя текущая попытка кодирования

public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.Routes.MapHttpRoute(
      name: "DocumobiApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

     config.Routes.MapHttpRoute(
      name: "V1Controller", 
      routeTemplate: "v1Controller/{id}", 
      defaults: new { id = RouteParameter.Optional } 
      ); 

     // Uncomment the following line of code to enable query support for actions with an IQueryable or IQueryable<T> return type. 
     // To avoid processing unexpected or malicious queries, use the validation settings on QueryableAttribute to validate incoming queries. 
     // For more information, visit http://go.microsoft.com/fwlink/?LinkId=279712. 
     //config.EnableQuerySupport(); 

     var jsonFormatter = config.Formatters.OfType<JsonMediaTypeFormatter>().FirstOrDefault(); 
     jsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); 
     config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html")); 
    } 
} 

, к которому я получаю ответ

"message":"No HTTP resource was found that matches the request URI 'http://localhost:38685/v1Controller'.","messageDetail":"No route providing a controller name was found to match request URI 'http://localhost:38685/v1Controller'"} 

Я уверен, что его что-то достаточно очевидно, но не могу за жизнь мне понять это.

Приветствия,

Стивен

ответ

1

Как указано в следующем сообщении об ошибке, сопоставление маршрута должно привести к предоставлению значения переменной маршрута controller, от которой зависит веб-API для выбора контроллера.

No route providing a controller name was found to match request URI 'http://localhost:38685/v1Controller 

Таким образом, вы можете изменить маршрут, как показано ниже (обратите внимание на значение по умолчанию для переменной controller):

config.Routes.MapHttpRoute(
      name: "V1Controller", 
      routeTemplate: "v1Controller/{id}", 
      defaults: new { id = RouteParameter.Optional, controller="SomeControllerHere" } 
      ); 
+0

Спасибо Киран! работал для меня, я заменил ваш текст на имя фактического контроллера, которого я хотел поразить. Также я понял, что вам не нужно включать слово-контроллер :-) –

0

Убедитесь, что ваш метод действия на ваш контроллер имеет идентификатор со значением по умолчанию.