관리 메뉴


Kinesis´s Open Document

ASP.NET C# - 웹서비스 폴더(디렉터리) 경로 얻어오기 (HttpContext) 본문

MEMO/기술 자료/C# Language

ASP.NET C# - 웹서비스 폴더(디렉터리) 경로 얻어오기 (HttpContext)

Kinesis 2012. 2. 24. 15:01
ASP.NET for C# 에서 서비스 중인 웹페이지의 폴더(디렉터리) 경로 얻어오기.

웹서비스에 관련된 프로그래밍을 하다보면 웹서비스 중인 폴더의 경로가 필요한 경우가 많다. 아니, 거의 빠지지 않고 등장한다. 하지만 이것을 물리적으로 기본 드라이버부터 실제 서비스하고 있는 폴더 명칭까지 일일이 적기에는 다소 불편한 문제가 발생하는 경우가 많다. 특히 서비스 하는 폴더명칭이 바뀌었을 경우나 개발중 테스트 환경이나 작업환경에 있어 폴더가 바꼇을 경우 이렇게 물리적으로 절대 경로를 지정했을 경우 그 디렉터리 명칭을 바꾸는 작업은 귀찮지 않을 수 없다. 특히 작업을 다 하고나서 통합하는 때에 폴더명이 달라 에러가 나거나 하는 경우에는 그 불편함을 이루 말할 수 없다.

실질적으로 이렇다보니, 루트 폴더 하나를 바탕으로 상대주소를 이용하는 것이 더욱 편할 수 밖에 없다. 그렇다면 기본적으로 사용할 루트 폴더를 어떻게 얻어와야할까?

이 물음 역시 HttpContext 클래스에서 제공하고 있는 하위 클래스에서 그 물음에 대한 해답을 건내 준다.
바로 이녀석이다.

HttpContext.Current.Request.PhysicalApplicationPath
이녀석 역시 값의 반환형은 String 으로 문자열이다.(문자형과 문자열을 해깔리는 분은 없으리라고 생각하고)

참고사항으로 팁을 하나 두자면 만일 웹 서비스 폴더(디렉터리)의 상위에 별도의 공간을 만들어서 사용한다라고 할때 기본적인 루트 경로를 얻어온 상태라고 해도 ..\ 과 같은 스트링 문자열을 추가하면 서버연산 단에서는 상위 디렉터리로의 접근이 가능하다.

결과적으로 현재 루트 폴더가

D:\IIS7 Web Server\Kinetic.Net\WebService\

라고 할때 WebService 의 하위 폴더(디렉터리)가 아닌 동급 또는 상위 폴더(디렉터리)에 접근 하는 방법의 일환으로서

D:\IIS7 Web Server\Kinetic.Net\WebService\..\
D:\IIS7 Web Server\Kinetic.Net\WebService\..\..\
D:\IIS7 Web Server\Kinetic.Net\WebService\..\WebService_Log\

와 같은 사용 방식도 이용할 수 있다는 것이다.

마지막으로 간략한 예를 참고용으로 작성해 두니 확인해보고 필요에 맞춰 이용하면 될 듯 싶다.

using System;
using System.Web;

public partial class Sample_0001 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpContext.Current.Response.Write(HttpContext.Current.Request.PhysicalApplicationPath);
    }
}


결과 화면


Comments