2011-08-08 48 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;