programing

에서 현재 디렉터리를 가져오는 중입니다.NET 웹 애플리케이션

goodsources 2023. 5. 16. 22:33
반응형

에서 현재 디렉터리를 가져오는 중입니다.NET 웹 애플리케이션

그래서 웹 프로젝트가 있는데 c# 메소드를 사용하여 웹 사이트의 루트 디렉터리를 가져오려고 합니다.Directory.GetCurrentDirectory()나중에 파일 위치가 변경되므로 정적 경로를 사용하지 않습니다.이 메서드는 내 imageProcess.aspx.cs 파일에서 실행되고 있지만 반환될 것으로 생각한 위치:

C:\Users\tcbl\documents\visual studio 2010\Projects\ModelMonitoring\ModelMonitoring\imageProcess.aspx.cs

대신 다음과 같은 정보를 얻을 수 있습니다.

C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\

왜 이런 일이 일어나고 있고 가능한 해결책이 무엇인지 설명할 수 있는 사람이 있습니까?정말 감사해요.

현재 디렉토리는 시스템 수준 기능이며, 서버가 시작된 디렉토리를 반환합니다.그것은 웹사이트와 관련이 없습니다.

너는 원한다HttpRuntime.AppDomainAppPath.

HTTP 요청에 있는 경우에는 다음을 호출할 수도 있습니다.Server.MapPath("~/Whatever").

다음 코드 사용:

 HttpContext.Current.Server.MapPath("~")

상세 참조:

Server.MapPath물리적 디렉토리에 매핑할 상대 경로 또는 가상 경로를 지정합니다.

  • Server.MapPath(".")실행 중인 파일의 현재 실제 디렉터리(예: aspx)를 반환합니다.
  • Server.MapPath("..")상위 디렉터리를 반환합니다.
  • Server.MapPath("~")응용 프로그램의 루트에 대한 물리적 경로를 반환합니다.
  • Server.MapPath("/")실제 경로를 도메인 이름의 루트로 반환합니다(애플리케이션의 루트와 동일할 필요는 없음).

예:

웹 사이트 응용 프로그램을 가리켰다고 가정합니다.

C:\Inetpub\wwwroot

상점 애플리케이션(IIS의 가상 디렉터리로 표시된 하위 웹)을 설치했습니다.

D:\WebApps\shop

예를 들어, 당신이 전화를 걸 수 있습니다.Server.MapPath다음 요청 시:

http://www.example.com/shop/products/GetProduct.aspx?id=2342

그러면:

Server.MapPath(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop

경로가 순방향(/) 또는 역방향 슬래시()로 시작하는 경우MapPathmethod는 경로가 전체 가상 경로인 것처럼 경로를 반환합니다.

경로가 슬래시로 시작하지 않으면MapPathmethod는 처리 중인 요청의 디렉터리에 상대적인 경로를 반환합니다.

참고: C#에서 @는 "있는 그대로" 문자열을 사용해야 하며 이스케이프 시퀀스에 대해 처리되지 않아야 함을 의미하는 동사형 리터럴 문자열 연산자입니다.

각주

Server.MapPath(null)그리고.Server.MapPath("")이런 효과도 낼 겁니다.

닷넷 6의 경우 사용:

AppContext.BaseDirectory

멋진 점은 asp.net 에서도 콘솔 애플리케이션에서도 동일하게 적용된다는 것입니다.

언급URL : https://stackoverflow.com/questions/10951599/getting-current-directory-in-net-web-application

반응형