2011-09-07 47 views
5

可能重複獲取IP地址:
Client IP using C#如何從訪問者(如果還落後代理)

我用ASP.net和C#和我想知道如何從頁面上的訪問者獲取IP地址。

我希望看到一個檢索IP地址的代碼示例,並且能夠顯示IP是否位於代理之後。

感謝您的時間。

+0

爲什麼傢伙下來投給這個問題嗎? Mat指出的問題並不涉及Proxy。評論將不勝感激。 – GibboK

+0

閱讀該問題的答案。有些人處理代理。 (至於downvote,我不知道,可能是因爲「沒有足夠的研究」) – Mat

+0

感謝您的評論墊。 – GibboK

回答

9

你可以使用Request對象的屬性UserHostName

string ip = Request.UserHostName; 

至於你對代理的第二個問題而言,有實現這個沒有可靠的方法。您可以使用啓發式查找可能由代理服務器發送的一些HTTP請求標頭,例如ViaX-Forwarded-For

string header = Request.Headers["Via"] ?? Request.Headers["X-Forwarded-For"]; 
if (!string.IsNullOrEmpty(header)) 
{ 
    // probably the request was forwarded from a proxy server 
    // but you cannot be 100% sure as HTTP request headers can be faked 
} 
+0

感謝Darin的洞察力。 – GibboK

+0

使'請求'工作,你需要添加'System.Web.dll'的引用,檢查如何做到這一點[這裏](http://www.codeproject.com/Questions/422895/The-name-HttpContext-does - 不存在的當前),希望可以幫助一些人。 – stom

+0

「Via」可能包含代理名稱,但是「X-Forwarded-For」是實際的IP。只要確保你選擇了正確的。 – SeriousM

-1

這麼簡單的傢伙,

string IP = Request.ServerVariables["REMOTE_HOST"].ToString(); 
+0

他的問題是關於在代理之後這麼做的。您的解決方案將始終爲代理服務器本身提供IP。 –