2012-10-02 3 views
1

대부분 우리는 프로덕션 서버에 게시하기 전에 Localhost에서 Asp.NET 웹 응용 프로그램을 개발하고 테스트합니다. 하지만 나에게 로컬 호스트는 때로는 절대 경로를 올바르게 얻을 수없는 고통이기도합니다. 왜냐하면 내 앱이 http://localhost/MyApp/에 위치하고 있기 때문에 호스트를 제대로 가져올 수 없기 때문입니다. 몇 가지 코드로 얻을 수는 있지만 좀 더 일반화되어 있으므로 다른 개발자가 동일한 응용 프로그램을 http://localhost/TheirApp과 같은 다른 위치에 둘 때마다 정상적으로 작동합니다.로컬 호스트의 상대 경로와 절대 경로를 처리하는 방법

샘플 문제 :이 /aboutus.aspx 같은 절대 경로를 사용할 때마다

,이 http://localhost/aboutus.aspx 발생하고 MyApp을 생략합니다. 상대 경로를 사용하면 다소 불안한 http://localhost/MyApp/IamHere.aspx/aboutus.aspx이됩니다.

따라서 Request.Url.Authority 또는 Request.Url.Hosthttp://localhost/MyApp을 반환하는 경우 다음을 사용하여 Google의 URL을 추가하고 멋진 해결책을 찾을 수 있습니다.

대안 솔루션 :

나는이 작업을 수행 할 수 있습니다 :

if(Request.Url.Host.StartsWith("localhost")) 
{ 
    string[] segments = Request.Url.AbsolutePath.Split("/"); 
    var localHost = Request.Url.Authority + "/" + segments[0]; 
} 

는 내가 localHost 변수를 사용하고 내 경로를 추가 할 수 있습니다.

하지만 저는 여러분이 그런 문제를 어떻게 다루고 있는지 알고 싶습니다.

감사합니다,

답변

5

나는 당신이 달성하려고하는 것을 아주 잘 모르겠지만, 당신은 웹 응용 프로그램의 루트를 참조 물결표 (~)를 사용하고 그 문제를 해결해야한다. ~localhost, localhost:34534, someserver.net/Deep/Path 또는 다른 작업을해야하는 경우

string url = ResolveUrl("~/aboutus.apsx"); 

ASP.NET 응용 프로그램은 그 자체로 파악됩니다.

+0

u 물결표가 필요하지 않습니다. 베어 어 파일 이름을 사용하면 현재 웹 응용 프로그램의 현재 호스트 및 포트의 현재 디렉토리가됩니다. 또는 당신은 똑같은 것을 더 명백하게 말할 수 있습니다 ./whatever.aspx – chris

+0

내가 울면 마음에 드나요? 어떻게 요즘은'~ /'를 잊어 버렸지 : / – Tarik

0

config 매개 변수 또는 앱을 통해 호스트와 경로 중 어느 곳에서나 작동하는 것은 잘 작동하는 응용 프로그램입니다. 프로그램/스크립트 자체와 호스트 이름 사이의 경로 (비트 사이)를 알아내는 것이 너무 어렵지 않아야합니다. 대부분의 경우 스크립트/프로그램은 상대 경로 만 사용할 수 있지만 웹 서버는 자동으로 다른 비트를 추가하므로 쓸 필요가 없습니다.

관련 문제