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

나는 절대 URL을 얻으려고하고있다. 지금 그러나asp.net mvc 절대 URL 얻기 (프록시 뒤)

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 헤더를 사용할 수 없지만 사용할 수 있지만 해당 정보를받지 못했기 때문에 사용할 수 없습니다.