ASP.NET에서 사이트의 절대 경로를 얻는 몇 가지 방법

1548 단어 .netcssasp.netasp
ASP를 작성하고 있습니다.NET 응용 프로그램의 경우 템플릿 페이지나 사용자 컨트롤에서 js나 css 파일의 경로를 설정하는 등 정적 파일의 경로를 더욱 잘 제어하기 위해 절대 경로를 사용하는 것은 불가피하다.다음은 절대 경로를 얻는 몇 가지 방법입니다.
 
VirtualPathUtility.ToAbsolute("~/")
HttpRuntime.AppDomainAppVirtualPath
Request.ApplicationPath
Page.ResolveUrl("~")

 
위 코드는 다음과 같이 생성됩니다. 웹 사이트에 액세스하면 다음과 같은 결과가 발생합니다.
VirtualPathUtility.ToAbsolute("~/")
=/
HttpRuntime.AppDomainAppVirtualPath
=/
Request.ApplicationPath
=/
Page.ResolveUrl("~")
=/
가상 디렉토리(http://localhost:806/web2/url.aspx) 액세스 시 결과는 다음과 같습니다.
VirtualPathUtility.ToAbsolute("~/")
=/web2/
HttpRuntime.AppDomainAppVirtualPath
=/web2
Request.ApplicationPath
=/web2
Page.ResolveUrl("~")
=/web2/
두 번째 방법과 세 번째 방법을 사용하면 처리를 해야 한다. 왜냐하면 사이트가 방문할 때는/끝으로 하고 가상 디렉터리로 방문할 때는/이 없기 때문에 한 번 더 판단해야 하기 때문에 좀 번거롭다.그러나 이러한 방법은 페이지에서 사용하는 데 아무런 문제가 없지만 Global의 ApplicationStart 이벤트에서 웹 사이트의 절대 경로를 얻으려면 앞의 두 가지 방법을 사용해야 합니다. 세 번째 방법을 사용하면 다음과 같은 오류가 보고됩니다. Request is not available in this context 따라서 첫 번째 두 가지 방법만 사용할 수 있습니다.예컨대
 
void Application_Start(object sender, EventArgs e)
{
    System.IO.StreamWriter s = new System.IO.StreamWriter(HttpRuntime.AppDomainAppPath + "log.txt");
    s.WriteLine(VirtualPathUtility.ToAbsolute("~/"));
    s.WriteLine(HttpRuntime.AppDomainAppVirtualPath);
    s.Close();
}

좋은 웹페이지 즐겨찾기