2010-03-08 50 views
0

我的一個類中的函數被調用GetIpAddress()返回以下字符串: System.Web.HttpContext.Current.Request.ServerVariables [「REMOTE_ADDR」]asp.net c#ip地址丟失後回發?

這一切運作良好定期頁面加載和得到我的IP地址,但是當我例如讓用戶發表評論時,則IP地址在回發後丟失,並且我得到返回的空字符串。

我在這裏錯過了什麼嗎?

親切的問候, 馬克

+0

當您使用Request.UserHostAddress時會發生什麼? – Marc 2010-03-08 17:52:05

+0

您可以顯示您調用GetIpAddress()或至少在哪個事件中的代碼區域嗎? – curtisk 2010-03-08 17:56:05

回答

0

你有它包裹在這樣的事情?

if (!Page.IsPostBack) { 
    GetIpAddress() 
} 

您需要每次調用該函數或將其存儲在共享變量中。

另一個選項(As @Marc提到)可以簡單地調用Request.UserHostAddress而不是GetIpAddress ......它的鍵入量幾乎相同,但是您不必爲其定製函數。

1

使用這些的:

HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; // a user is going through a proxy server 

HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; 
HttpContext.Current.Request.UserHostAddress; 

一些解釋: 遠程主機發出請求的REMOTE_ADDR的IP地址。

REMOTE_HOST發出請求的主機的名稱。如果服務器沒有這個信息,它將設置REMOTE_ADDR並將其保留爲空。