如何从对webservice的请求中获取客户端IP地址

时间:2011-08-08 12:12:13

标签: c# .net web-services file-upload

我的IIS中有一个web服务...我需要在客户端直接使用我的服务时找到clientIP地址

喜欢http://MyIpAddress/MyApplication/MyWebServiceClass.asmx

是否可以从客户端计算机读取文件?如果是这样我该怎么办?

3 个答案:

答案 0 :(得分:4)

尝试拨打

Request.UserHostAddress

HttpRequest.UserHostAddress Property

关于从客户端访问文件,首先需要将文件上传到服务器。

将文件上传到网络服务时,请检查以下内容:

ASMX file upload

Create a simple file transfer Web service with .NET

答案 1 :(得分:4)

您应该在ASMX中拥有一个普通的旧HTTP上下文:

        HttpContext.Current.Request.UserHostAddress

另外:“是否可以从客户端计算机读取文件” - 这完全取决于您的实现。如果您正在为您的Intranet制作Web服务并且您在一个小型(ish)商业环境中工作,那么您可能可以与您的网络人员进行适当的规划(不提倡这是一个好主意,只是一种可能性)。 / p>

进一步说明一下,如果您在小型办公室环境中并且从192.168.1.55获得请求,并且您知道网络中的每台客户端计算机在C驱动器中都有一个lastLoginData.txt文件,并且您具有相应的通过托管服务的机器对UNC访问客户端的配置,可以获得“\\”+ ip +“\ c $ \ lastLoginData.txt”。你会为自己创造一个潜在的可怕的安全问题,但这是可能的。

在大多数正常情况下,不会,您将无法从Web服务访问客户端磁盘 - 可能必须首先进行某种上载。

答案 2 :(得分:0)

        String ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (string.IsNullOrEmpty(ip))
        {
            ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
        }
        else
        {
            ip=ip.Split(',')[0];
        }

        return ip;