2013-01-23 64 views
0

我的網站在Amazon ELB上運行。我需要捕獲客戶的IP地址,以便在網站上進行某些操作 - 這並不理想,但我們現在肯定需要IP。如何將HTTP_X_FORWARDED_FOR傳遞給IIS中的aspx頁面

這用於在專用服務器上運行良好。但自從搬到ELB,我只得到ELB的內部IP地址作爲客戶端的IP地址,當我使用Request.UserHostAddress

Going from some blogs我加入X-Forwarded-For和即使我的IIS日誌有權客戶端IP,即IP不通過實際網頁..

事實上,標題中沒有這樣的字段..或任何接近標題的字段。

檢查Request.Headers.ToString()給我我的會話cookie,其他cookie,客戶端瀏覽器(正確)和其他類似的東西,但沒有關於任何IP。事實上,我甚至無法看到ELB的靜態IP。

Request.Headers["HTTP_X_FORWARDED_FOR"]始終爲空,可以理解。

如何從C#獲取真實的客戶端IP?

回答

1

我前幾天做了類似的事情!我不得不使用Request.ServerVariables並查找REMOTE_ADDR找到客戶端IP。

事情是這樣的:

if (Request.ServerVariables["REMOTE_ADDR"] != null) 
{ 
    string userIP = Request.ServerVariables["REMOTE_ADDR"]; 
} 

爲我工作..

+0

是的,這工作,謝謝! – LocustHorde

1

在我的測試中,客戶端IP地址是由兩個下列情形之一的彈性負載均衡填充。

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 

Request.Headers["X-Forwarded-For"]; 

請注意,這些變量的格式不一定只是客戶端IP地址。如果請求被多次轉發,則服務器IP地址將附加逗號和空格作爲分隔符。

查看Amazon's Elastic Load Balancing Developer Guide瞭解更多詳情(搜索X-Forwarded-For)。

相關問題