2017-03-31 30 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标头,但它已启用,但我没有收到该信息,因此无法使用它。