2017-03-31 29 views
0
user --> internet --> server1 (iis proxy) --> server2 (hosting the website) 

我想獲取絕對網址。asp.net mvc獲取絕對網址(代理後)

string fullUrl = Url.Action("Bar", "Foo", new RouteValueDictionary(new { id = pid, search = search }), Request.Url.Scheme); 
string fullUrlEncoded = HttpUtility.UrlEncode(fullUrl); 

但是現在不是我收到內部IP這絕對URL:

http://192.168.0.3/Foo/Bar/5 

這可怎麼

下面的代碼也沒有,當我們不使用代理的任何問題工作解決了?

+1

實際上,我不認爲有任何事情可以做。應用程序將無法查看使用它的反向代理。如果你絕對需要絕對URL,你可能不得不簡單地使用應用程序設置進行硬編碼。然後,您可以創建一個UrlHelper擴展來讀取該值並根據此值構建一個真正的絕對URL。 –

+1

應用程序設置的好處是您可以通過配置轉換更改值。 –

+0

您可能會調查代理是否正在設置X-Forwarded-For標頭。如果沒有,配置它可能會產生更好的結果。 –

回答

0

我最終將appsettings中的url進行了硬編碼並將其添加到了Chris Pratt建議的url中。 我無法使用任何X-Forwarded-For標頭,但它已啓用,但我沒有收到該信息,因此無法使用它。