【问题标题】:How can I get the Url of the web site which is using my web service?如何获取正在使用我的网络服务的网站的 URL?
【发布时间】:2009-04-14 13:18:21
【问题描述】:

我开发了一个网络服务并将其托管在我的服务器上,我想知道谁在使用这个网络服务(网站 URL)。我尝试使用“Request.UrlReferrer”,但它没有返回任何东西!有什么建议/建议吗?

【问题讨论】:

  • 糟糕!行。知道了。我猜你必须使用 IP,然后使用反向 DNS 查找。

标签: asp.net web-services


【解决方案1】:

您无法获取 Web 服务调用者的 URL,因为并非所有调用者都有规范的 URL。但是,您可以假设 IP 地址不在代理/nat 后面。在这种情况下,您将获得 nat / 代理的 IP。

假设您使用的是 ASMX Web 服务,您可以通过以下方式:

HttpContext.Current.Request.UserHostAddress

获得 IP 地址后,您可以尝试进行反向查找以获取主机名。我建议存储 IP 地址,然后编写一个离线进程,尝试确定谁拥有该 IP。我确信有一些网络服务可以帮助解决这个问题。

【讨论】:

  • "您无法获取 Web 服务调用者的 URL,因为并非所有调用者都有规范的 URL。"完全正确,谢谢
【解决方案2】:

您可以使用 Request.Url 属性来获取有关对您的 Web 服务的请求的所有信息。

【讨论】:

  • 这只会返回 web 服务本身的 Url,但没有关于调用者的信息。
【解决方案3】:

referrer是客户端设置的,客户端可以设置。这就是为什么你什么也看不见。如果客户端是服务器,那么您能做的最好的事情就是获取客户端连接的 IP 并转到该 IP。如果是一个简单的设置,没有虚拟主机,那么这就是 “网站” 正在访问您的 Web 服务。

【讨论】:

    【解决方案4】:

    作为Josh statesHttpRequest 对象是要走的路,那里有一些属性可能会有所帮助:

    1. UserHostName - 获取远程客户端的 DNS 名称。
    2. UserAgent - 获取客户端浏览器的原始用户代理字符串。
    3. UserHostAddress - 获取远程客户端的 IP 主机地址。

    这可能会为您提供更多信息。

    【讨论】:

      猜你喜欢
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-15
      • 1970-01-01
      • 2011-12-29
      相关资源
      最近更新 更多