2009-06-03 15 views
148

C'è qualche differenza tra Server.MapPath() e HostingEnvironment.MapPath()? Server.MapPath() presenta alcuni vantaggi rispetto a HostingEnvironment.MapPath()?Qual è la differenza tra Server.MapPath e HostingEnvironment.MapPath?

Il mio problema originale era mappare il percorso del file su un server quando il HttpContext non è presente e non posso passare una variabile Server da Global.asax al mio metodo.

Ho utilizzato HostingEnvironment.MapPath() poiché non è necessario HttpContext. Ci sono situazioni in cui questi due metodi daranno risultati diversi?

risposta

174

Server.MapPath() chiama infine HostingEnvironment.MapPath(), ma crea un oggetto VirtualPath con opzioni specifiche:

L'oggetto VirtualPath passato a HostingEnvironment.MapPath() è costruito in questo modo:

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

Edit: in realtà, l'unica differenza è che ti è permesso di passare null a Server.MapPath(), ma non a HostingEnvironment.MapPath()

+2

Quindi otterrò sempre gli stessi risultati con entrambi i metodi, giusto? (escluso l'argomento nullo) – empi

+2

sì, lo faresti. –

+48

** TL; DR **: usa sempre 'HostingEnvironment.MapPath()' per mantenere la sanità mentale. (+1) –

99

Server.MapPath() richiede un HttpContext. HostingEnvironment.MapPath no.

Problemi correlati