Server.MapPath ve HostingEnvironment.MapPath arasındaki fark nedir?


174

Arasında herhangi bir fark var mı Server.MapPath()ve HostingEnvironment.MapPath()? Does Server.MapPath()üzerinde herhangi bir avantaja sahip HostingEnvironment.MapPath()?

Benim asıl sorun bir sunucudaki dosya yolunu HttpContextmevcut değildi ve benim yöntemime bir Serverdeğişken Global.asaxiletemiyorum.

Bunun HostingEnvironment.MapPath()yerine ihtiyacım olmadığı için kullandım HttpContext. Bu iki yöntemin farklı sonuçlar vereceği durumlar var mı?

Yanıtlar:


204

Server.MapPath()sonunda arar HostingEnvironment.MapPath(), ancak VirtualPathbelirli seçeneklerle bir nesne oluşturur :

İletilen VirtualPathnesne HostingEnvironment.MapPath()şu şekilde oluşturulur:

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

Düzenleme : gerçekte, tek fark null değerine geçmenize izin verilir Server.MapPath(), ancakHostingEnvironment.MapPath()


2
Bu yüzden her iki yöntemden de aynı sonuçları alacağım, değil mi? (boş argüman hariç)
empi

61
TL; DR : HostingEnvironment.MapPath()akıl sağlığınızı korumak için daima kullanın . (+1)
Chris Marisic

15
Server.MapPath("myFolder")Null'un ötesinde farklı bir şey olmalı çünkü iyi çalışıyor ama HostingEnvironment ile aynı sonucu elde etmek için kullanmak zorunda kaldım HostingEnvironment.MapPath("~/myFolder").
styfle

Bir web servisine çağrı yoluyla bir ftp oturumu başlatmak için harika bir cevap. Bugün beni büyük kurtardı !!!
htm11h

10
Aslında başka bir fark daha vardır - HostingEnvironment.MapPath ile göreli yollara (ör. Image / pict.png) izin verilmez.
NetMage

113

Server.MapPath()gerektirir HttpContext. HostingEnvironment.MapPathdeğil.


2
ancak her ikisi de System.WebSelf Hosted OWIN ortamlarıyla çalışacak mı?
vibs2006
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.