2015-02-22 3 views
1

У меня проблема, что в моем автономном маршруте веб-сервиса Asp.Net OWIN с переопределением Route -трибут не работает.ApiController route override не работает

Моя первоначальная маршрутизация выглядит следующим образом:

string routeTempl = "api/" + EndpointManager.API_VERSION + "/{controller}/{action}/{id}"; 

// Configure Web API for self-host. 
HttpConfiguration config = new HttpConfiguration(); 
config.Routes.MapHttpRoute(
name: "DefaultApi", 
routeTemplate: routeTempl, 
defaults: new { id = RouteParameter.Optional } 
); 

Мой контроллер выглядит следующим образом:

public class GeneralController : ApiController 
{ 
    /// <summary> 
    /// Ping the api, mostly for testing reason 
    /// </summary> 
    /// <returns>Current server datetime</returns> 
    [HttpGet] 
    public DateTime Ping() 
    { 
     // return datetime as ping 
     return DateTime.Now; 
    } 

    /// <summary> 
    /// Get the current api version 
    /// </summary> 
    /// <returns>Api-Version as a string</returns> 
    [HttpGet, Route("~/api/version")] 
    public string ApiVersion() 
    { 
     return EndpointManager.API_VERSION; 
    } 
} 

пинг-метод, доступную, как я хочу его, над: http://localhost:48000/api/v1-0/general/ping

Но я не могу получить доступ к ApiVersion-методу: http://localhost:48000/api/version

Есть ли у кого-нибудь идеи, что я делаю неправильно в Route -трибуте?

Спасибо!

ответ

2

Попробуйте добавить эту строку после конфигурации маршрутизации:

config.MapHttpAttributeRoutes();

+0

Вы лучшие, спасибо! – BendEg