我收到以下路由属性的异常:
[Route("{id}?action=decline")]
例外:
System.Web.Http.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:路由模板不能以“/”或“~”字符开头,并且不能包含“?” 特点。
为什么不允许这样做?
我收到以下路由属性的异常:
[Route("{id}?action=decline")]
例外:
System.Web.Http.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理
附加信息:路由模板不能以“/”或“~”字符开头,并且不能包含“?” 特点。
为什么不允许这样做?
我认为这是不允许的,因为查询字符串不是 URI-Path 的一部分。(参见RFC3986 Section 3.3 Path,它不包括查询部分)
但我没有确凿的事实证明:/。也许这些链接可以帮助您:
基于查询字符串参数名称
QueryString 的路由与 MVC 5 Web API 2
中的属性路由 ASP.NET Web API 2 中的属性路由
您可以这样做,您将可以同时访问id
和action
:
[Route("{id}")]
public IHttpActionResult YourMethod([FromUri] string action)