我使用appKey查询字符串参数来授权某些客户端应用程序。
示例请求: myserver / mydata?appKey = 12345
我有一个DelegatingHandler来验证appKey,所以当我真正提供请求时我不需要它。但是,即使我不需要它,我需要添加我的方法签名,如下所示,否则将返回NotFound。
public HttpResponseMessage GetMyData(string appKey)
有没有办法使用以下方法来处理请求,即使查询字符串有appKey参数?
public HttpResponseMessage GetMyData()
答案 0 :(得分:1)
我仍然没有理解这一点。
无论如何:你尝试过路由属性吗?类似于:
[Route("myserver/mydata?appKey={key}")]
[HttpPost]
public public HttpResponseMessage GetMyData() { ... }
我没有测试它,但是感谢te route属性将被调用你的URL。试试吧。
此处有更多信息:
http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2
答案 1 :(得分:0)
与此同时,我找到了一个解决方案。仍然在消息处理程序代码中,我可以更改Message.RequestUri并删除查询字符串部分。在这种情况下,路由机制可以将调用路由到我想要的方法。
所以请求可以是 myserver / mydata?appKey = 12345 ,但处理它的代码可以是以下(没有appKey的迹象)
[Route]
public HttpResponseMessage GetMyData()