我的webapi路线是标准路线:
controller/action/{id}
在我的控制器中,相应的操作ID映射到字符串。 在应用程序中,用户可以配置Id。用户为其ID选择了以下格式:X / Y / Z。
因此,在请求元素时,请求是:
controller/action/X/Y/Z {remember 'X/Y/Z' is the id}
webapi返回404错误,我甚至无法通过调试进入控制器。
即使我在Id中编码code /,也会发生同样的事情
controller/action/X%2FY%2FZ {%2F being the encoding for /}
方法签名如下:
[Route("{reference}")]
[HttpGet]
public IHttpActionResult GetElementById(string reference = null)
如果ID为/在id值中,我如何将其作为参数发送?
答案 0 :(得分:2)
使用可变数量的细分。请将您的WebApiConfig更改为:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{*id}",
defaults: new { id = RouteParameter.Optional }
);
答案 1 :(得分:0)
我建议使用属性路由。
[HttpGet, Route("api/dosomething/{x:int:min(1)}/{y:int:min(1)}/{z:int:min(1)}")]
public IHttpActionResult YourMethod(int x, int y, int z)
{
}