C#WEBApi MVC帮助页面

时间:2018-08-07 19:41:39

标签: c# asp.net-web-api

我下面有一个自定义路线和操作。

    [System.Web.Mvc.Route("Sites/{id:string}/Cache")]
    public ResponseMessage<Result> DeleteCache ([FromUri] string id)
    {

当我获得帮助页面时,它给出了使用此调用的三个示例:

DELETE Sites/{id}/Cache
DELETE Sites/{id}
DELETE api/Sites/DeleteCache?id={id}

我想保留第一个,删除其他的。有内置的方法吗?

这是我的WebApiConfig.cs片段。...

config.Routes.MapHttpRoute(
    name: "DeleteCache",
    routeTemplate: "{controller}/{id}/Cache",
    defaults: new { controller = "Sites", action = "DeleteCache" }
);

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

1 个答案:

答案 0 :(得分:1)

HelpPage将列出每个控制器的每个有效路由。如果您希望某条路线不适用于特定控制器,则必须在该路线上添加约束以使其不再匹配:

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "{controller}/{id}",
    defaults: new { id = RouteParameter.Optional },
    constraints: new {controller = "((?!Sites).)*" }
);

这使用负前瞻正则表达式来匹配每个未命名为Sites的Controller