【问题标题】:ApiController route override not workingApiController 路由覆盖不起作用
【发布时间】:2015-02-22 21:13:39
【问题描述】:

我的问题是,在我的 Asp.Net OWIN 自托管 Web 服务路由中覆盖 Route-attribute 不起作用。

我的初始路由如下所示:

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-attribute 中做错了什么?

谢谢!

【问题讨论】:

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


    【解决方案1】:

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

    config.MapHttpAttributeRoutes();

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2014-05-28
      • 2020-07-15
      • 2016-07-12
      相关资源
      最近更新 更多