Server.MapPath와 HostingEnvironment.MapPath의 차이점은 무엇입니까?


174

Server.MapPath()와 사이에 차이가 HostingEnvironment.MapPath()있습니까? 에 Server.MapPath()비해 어떤 장점이 HostingEnvironment.MapPath()있습니까?

내 원래 문제는 파일 HttpContext이없고 Server변수 Global.asax를 내 메소드에 전달할 수없는 경우 서버의 파일 경로를 매핑하는 것이 었습니다 .

HostingEnvironment.MapPath()필요하지 않기 때문에 대신 사용 했습니다 HttpContext. 이 두 가지 방법으로 다른 결과를 얻을 수있는 상황이 있습니까?

답변:


204

Server.MapPath()결국을 호출 HostingEnvironment.MapPath()하지만 VirtualPath특정 옵션 으로 객체를 만듭니다 .

VirtualPath전달 된 객체 HostingEnvironment.MapPath()는 다음과 같이 구성됩니다.

VirtualPath.Create(path, VirtualPathOptions.AllowAllPath|VirtualPathOptions.AllowNull);

편집 : 실제로, 유일한 차이점은에 null을 전달할 수 Server.MapPath()있지만HostingEnvironment.MapPath()


2
그래서 나는 항상 두 방법 모두에서 동일한 결과를 얻을 것입니다. (null 인수 제외)
empi 2016 년

61
TL; DR : 항상 HostingEnvironment.MapPath()건강을 유지하기 위해 사용 합니다. (+1)
Chris Marisic 2016 년

15
Server.MapPath("myFolder")잘 작동 하기 때문에 null 이외의 다른 것이 있어야 하지만 HostingEnvironment와 동일한 결과를 얻으려면을 사용해야했습니다 HostingEnvironment.MapPath("~/myFolder").
styfle

웹 서비스 호출을 통해 ftp 세션을 시작한 환상적인 답변입니다. 오늘 나를 크게 구했어 !!!
htm11h

10
실제로 다른 차이점이 있습니다. HostingEnvironment.MapPath에서는 상대 경로 (예 : Image / pict.png)를 사용할 수 없습니다.
NetMage

113

Server.MapPath()필요합니다 HttpContext. HostingEnvironment.MapPath하지 않습니다.


2
그러나 둘 다 System.Web자체 호스팅 OWIN 환경에서 작동 해야 합니까?
vibs2006
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.