ApiController路由覆盖不起作用

时间:2015-02-22 21:13:40

标签: c# asp.net-web-api routing owin self-hosting

我遇到了问题,在我的Asp.Net OWIN自托管Web服务路由覆盖了Route - 属性不起作用。

我的初始路由如下:

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;
    }
}

ping方法可以根据我的需要访问:http://localhost:48000/api/v1-0/general/ping

但我无法访问ApiVersion-Method:http://localhost:48000/api/version

有没有人知道我在Route属性中做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

尝试在路由配置后添加该行:

config.MapHttpAttributeRoutes();

相关问题