我在下面有一条自定义路线和操作。
[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 }
);
最佳答案
帮助页面将列出每个控制器的每个有效路由。如果您希望某条路线不适用于特定的控制器,则必须在该路线上添加约束以使其不再匹配:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = RouteParameter.Optional },
constraints: new {controller = "((?!Sites).)*" }
);
这使用负前瞻正则表达式来匹配每个未命名为Sites的Controller
关于c# - C#WEBApi MVC帮助页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51734319/