我在控制器中有一个路径,它应该匹配url的部分内容并将其放入字符串参数中。
我拥有的是:
[Route("api/proxy/{proxyId}/{*parameter}")]
public Task<HttpResponseMessage> Mediate(int proxyId, string parameter)
并且对于未知的网址,例如:
我希望“参数”变量包含:
测试?a = 1&amp; b = 2
相反,它包含:
测试
如何在问号后指定不切割所有内容的路线? 对于这个特殊情况,我可以从Request.RequestUri对象中提取它,但它将是......不优雅的。
答案 0 :(得分:3)
你做不到。根据定义,URL段不包括查询字符串。
但是,您可以做一些非常简单的事情:在WebApi控制器中,您具有包含查询字符串的Request
属性:
Request.RequestUri.Query
您只需将url param与此连接即可获得所需内容。这包括主要问号:
Query属性包含URI中包含的任何查询信息。查询信息通过问号(?)与路径信息分开,并继续到URI的末尾。返回的查询信息包括前导问号。
如果您仍想强制它以不同的方式工作,您需要包含自己的自定义路由提供程序,实现您自己的IDirectRouteProvider并注册它。请参阅:get a list of attribute route templates asp.net webapi 2.2
但做这样的事情是不自然的。为什么事情与所有其他人理解和使用的标准方式完全不同?