2011-08-08 49 views

回答

4

你应该在ASMX在您的处置有一个普通的旧式HTTP上下文:

 HttpContext.Current.Request.UserHostAddress 

还有:“是否可以从客户机读取文件” - 这一切都取决于您的实现。如果你正在为企业内部网做一个网络服务,并且你在一个小的(ish)商业环境中工作,那么你可能会给予你的网络人员适当的计划(不是主张这是一个好主意,而只是一种可能性)。

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

尽管在最正常的情况下,不会,您将无法从Web服务访问客户端磁盘 - 某种上传可能必须首先发生。

+0

的可能的复制有没有什么办法让读取文件知道地址? – user824910

+0

备注:使用IPAddress.Parse将字符串解析为IPAddress对象。然后你可以做类似的东西。 Equals(IPAddress.Loopback)来测试请求是否来自本地机器等。 – user169771

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;