Sự khác biệt giữa Server.MapPath và HostingEn Môi.MapPath là gì?


174

Có sự khác biệt nào giữa Server.MapPath()HostingEnvironment.MapPath()không? Có Server.MapPath()bất kỳ lợi thế hơn HostingEnvironment.MapPath()?

Vấn đề ban đầu của tôi là ánh xạ đường dẫn tệp trên máy chủ khi HttpContextkhông có và tôi không thể chuyển một Serverbiến từ Global.asaxphương thức của mình.

Tôi đã sử dụng HostingEnvironment.MapPath()thay thế vì nó không cần HttpContext. Có tình huống nào khi hai phương pháp này sẽ cho kết quả khác nhau không?

Câu trả lời:


204

Server.MapPath()cuối cùng gọi HostingEnvironment.MapPath(), nhưng nó tạo ra một VirtualPathđối tượng với các tùy chọn cụ thể:

Đối VirtualPathtượng được truyền vào HostingEnvironment.MapPath()được xây dựng như thế này:

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

Chỉnh sửa : trong thực tế, sự khác biệt duy nhất là bạn được phép chuyển null sang Server.MapPath(), nhưng không đượcHostingEnvironment.MapPath()


2
Vì vậy, tôi sẽ luôn nhận được kết quả giống nhau từ cả hai phương pháp, phải không? (không bao gồm đối số null)
empi

61
TL; DR : luôn luôn sử dụng HostingEnvironment.MapPath()để giữ sự tỉnh táo. (+1)
Chris Marisic

15
Phải có một cái gì đó khác ngoài null vì Server.MapPath("myFolder")hoạt động tốt nhưng để có được kết quả tương tự với HostingEn Môi trường, tôi đã phải sử dụng HostingEnvironment.MapPath("~/myFolder").
styfle

Câu trả lời tuyệt vời để bắt đầu một phiên ftp thông qua một cuộc gọi đến một dịch vụ web. Cứu tôi hôm nay rất lớn !!!
htm11h

10
Trên thực tế, có một sự khác biệt khác - các đường dẫn tương đối (ví dụ: Image / fig.png) không được phép với HostingEn Môi.MapPath.
NetMage

113

Server.MapPath()đòi hỏi một HttpContext. HostingEnvironment.MapPathkhông làm.


2
nhưng cả hai đều yêu cầu System.Webhọ sẽ làm việc với môi trường OWIN được lưu trữ?
vibs2006
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.