【问题标题】:How to pass an IP address as a URL parameter to a Web API? [duplicate]如何将 IP 地址作为 URL 参数传递给 Web API? [复制]
【发布时间】:2015-04-29 10:09:23
【问题描述】:

我的一个 Web API 将 IP 地址作为 URL 参数(字符串类型)并对其进行处理。问题是我无法将 IP 地址作为 URL 的一部分传递。

这是一个 HTTP GET。 http://localhost/app/dosomethingwiththisip/10.20.128.0 的请求失败,而 http://localhost/app/dosomethingwiththisip/10 成功(即使它在需要做什么方面失败了)。

Web API 方法定义为,启用属性路由,

[Route("dosomethingwiththisip/{ipAddress}")]
[HttpGet]
public bool dosomethingwiththisip(string ipAddress)
{
}

我做错了吗?

【问题讨论】:

  • 带IP的请求怎么会失败?用什么信息?
  • HTTP 404 失败。
  • HTTP 错误 404.0 - 未找到您要查找的资源已被删除、更改名称或暂时不可用。
  • 感谢@Pharylon 的提示。这有帮助;我将使用尾部斜杠。这证明搜索域还有改进的空间:)
  • @Pharylon 我仍然认为这个明确的问题应该存在,因为另一个问题并不那么明确。

标签: asp.net-mvc asp.net-web-api asp.net-web-api2


【解决方案1】:

如果您指定的是 url 参数而不是文件或目录名称,那么您应该在参数列表前面加上 ?所以网络服务器知道。它无法说明您的意图。

试试:http://localhost/app/dosomethingwiththisip/?10.20.128.0

【讨论】:

  • 谢谢。稍微好一点,但我猜仍然是路由解析的问题,{"Message":"No HTTP resource was found that match the request URI 'localhost/app/users/dosomethingwiththisip/… type was found that match the controller named 'users'."}
  • 请了解 ASP.NET MVC 和 WebAPI 的路由(或一般的 URL 重写/路由)。
  • URL 重写仍然基于 URL。破坏的诡计并没有改变网络服务器试图加载一个名为 10.20.128.0 的页面
【解决方案2】:

我最终采用了一个简单的解决方案,即在 URL 末尾的 IP 地址后面附加一个斜杠字符。感谢@Pharylon 提供类似问题的提示,Dots in URL causes 404 with ASP.NET mvc and IIS

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-25
    相关资源
    最近更新 更多