Web API - 按IP地址获取资源

时间:2016-10-27 06:48:43

标签: c# rest asp.net-web-api get

我试图通过在GET请求中提供IP地址来获取资源。

/api/computers/ip/192.168.10.90 - throws 404 error

/api/computers/ip/192~168~10~90 - hits the method

看起来提供IP是这里的问题。那么如何将IP作为GET请求的一部分传递?

2 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是对ip地址进行编码并将其作为查询字符串值传递。 你的方法将是

[Route("computers/ip")]
public IHttpActionResult GetComputer(string ip)

你发送请求:... / computers / ip?ip = [theEncodedIP]

您可以从方法Route

中删除/ ip
[Route("computers")]
public IHttpActionResult GetComputer(string ip)

您使用以下命令发送请求:... / computers?ip = [theEncodedIP]

答案 1 :(得分:0)

你必须以编码形式传递ip,但是在Get请求中使用querystring。您也可以通过HTTP handlers执行此操作,因此,如果请求符合条件,则可以在请求转到服务器之前使用您的逻辑。

有些链接建议在Web.Config中设置runAllManagedModulesForAllRequests为真。

<modules runAllManagedModulesForAllRequests="true">

启用RunAllManagedModulesForAllRequests将为所有请求启用所有托管模块。因此,如果不需要,服务器将处理图像,PDF和其他所有资源。