2014-05-22 2 views
1

터키어와 영어 간 웹 사이트에 언어 스위치가 있습니다. 문제는 페이지의 사용자가 http://en.fastercv.com/is-ilanlari 인 것으로 가정합니다. 그가 터키 깃발을 클릭하면 그는 http://www.fastercv.com/is-ilanlari 대신 http://www.fastercv.com 홈 페이지로 리디렉션되었습니다. 그는 언어 플래그를 클릭하면 자신이 홈 페이지에있는 경우 Response.Redirect에 대한 Request.UrlReferrer가 홈 페이지에서 충돌합니다.

if (Request.UrlReferrer!=null) 
{ 
    string prevPage = Request.UrlReferrer.ToString(); 
    string prevUrl = Request.UrlReferrer.ToString(); 
    Uri uri = new Uri(prevUrl); 
    string prevPath = uri.PathAndQuery; 
    if (uri.Host == "en.fastercv.com") 
    { 
      Response.Redirect("http://www.fastercv.com" + prevPath); 
    } 
} 

지금 문제는, 그것은 무한 루프에 들어가는 보인다 : 나는 아래의 코드를 사용하여 정리. 페이지가로드되지 않습니다. Firefox에서는 다음과 같이 말합니다 : Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies. 홈 페이지에서만 발생합니다. 나는 uri.Host 비트가 if 체크에 의심된다. ​​그것은 ASP.NET-MVC이다.

+0

가 유 네, 브레이크 포인트가 입력 한 않을 경우 경우 (uri.Host == "en.fastercv.com") 조건 내에서, 디버그에 중단 점을 사용하여 시도했던 다음의 경우 조건을 다시 썼다? –

+0

나는 그렇지 않다. Cos,이 경우 "uri.host"는 "localhost"가됩니다. 그러나 그것은 분명히 홈 페이지가 아닌 다른 페이지에서도 작동합니다. – Jude

+0

ok, uri.Host가 호스트인지 아닌지를 확인하십시오. if() {Response.Write (uri.Host + ", inside if");}이 줄을 작성하여 Host 주소. –

답변

0

원인을 발견했습니다. URL에 "경로 및 쿼리"가 없으면 Index() 메서드가 항상 다시 시작됩니다.

if (uri.Host == "en.fastercv.com" && uri.PathAndQuery!="/") 
{ 
     Response.Redirect("http://www.fastercv.com" + prevPath); 
} 
관련 문제