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);

संपादित करें : वास्तव में, एकमात्र अंतर यह है कि आपको अशक्त करने की अनुमति है Server.MapPath(), लेकिन नहींHostingEnvironment.MapPath()


2
तो मैं हमेशा दोनों तरीकों से एक ही परिणाम प्राप्त करूंगा, है ना? (अशक्त तर्क को छोड़कर)
एम्पि

61
टीएल; डीआर : हमेशा HostingEnvironment.MapPath()पवित्रता रखने के लिए उपयोग करें। (+1)
क्रिस मैरिसिक

15
शून्य से परे कुछ अलग होना चाहिए क्योंकि Server.MapPath("myFolder")ठीक काम करता है लेकिन HostingEnvironment के साथ एक ही परिणाम प्राप्त करने के लिए, मुझे उपयोग करना था HostingEnvironment.MapPath("~/myFolder")
23

एक वेब सेवा के लिए एक कॉल के माध्यम से एक ftp सत्र शुरू करने के लिए शानदार जवाब। आज मुझे भारी बचा लिया !!!
htm11h 15

10
वास्तव में एक और अंतर है - होस्टिंग पथ के साथ रिश्तेदार पथ (जैसे छवि / pict.png) की अनुमति नहीं है।
नेटमैसेज

113

Server.MapPath()एक की आवश्यकता है HttpContextHostingEnvironment.MapPathनहीं करता।


2
लेकिन दोनों की आवश्यकता होती है System.Webतो क्या वे सेल्फ होस्टेड ओविन वातावरण के साथ काम करेंगे?
vibs2006
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.