जवाबों:
Server.MapPath भौतिक निर्देशिका में मैप करने के लिए सापेक्ष या वर्चुअल पथ निर्दिष्ट करता है ।
Server.MapPath(".")1 फ़ाइल की वर्तमान भौतिक निर्देशिका (जैसे aspx) को निष्पादित किया जा रहा हैServer.MapPath("..") मूल निर्देशिका लौटाता हैServer.MapPath("~") आवेदन के मूल में भौतिक पथ देता हैServer.MapPath("/") डोमेन नाम के रूट पर भौतिक पथ लौटाता है (जरूरी नहीं कि यह आवेदन की जड़ के समान हो)एक उदाहरण:
मान लीजिए कि आपने एक वेब साइट एप्लिकेशन ( http://www.example.com/) को इंगित किया है
C:\Inetpub\wwwroot
और अपने दुकान आवेदन (IIS में आभासी निर्देशिका के रूप में उप वेब, आवेदन के रूप में चिह्नित) को स्थापित किया
D:\WebApps\shop
उदाहरण के लिए, यदि आप Server.MapPath()निम्नलिखित अनुरोध में कॉल करते हैं:
http://www.example.com/shop/products/GetProduct.aspx?id=2342
फिर:
Server.MapPath(".")1 रिटर्नD:\WebApps\shop\productsServer.MapPath("..") रिटर्न D:\WebApps\shopServer.MapPath("~") रिटर्न D:\WebApps\shopServer.MapPath("/") रिटर्न C:\Inetpub\wwwrootServer.MapPath("/shop") रिटर्न D:\WebApps\shopयदि पथ या तो फ़ॉरवर्ड स्लैश ( /) या बैकवर्ड स्लैश ( \) से शुरू होता है, तो एक MapPath()पथ देता है जैसे कि पथ पूर्ण, आभासी पथ था।
यदि पथ स्लैश से प्रारंभ नहीं होता है, तो MapPath()संसाधित किए जा रहे अनुरोध की निर्देशिका के सापेक्ष एक पथ देता है।
नोट: C # में, @शब्दशः शाब्दिक स्ट्रिंग ऑपरेटर है जिसका अर्थ है कि स्ट्रिंग को "जैसा है" का उपयोग किया जाना चाहिए और भागने के अनुक्रम के लिए संसाधित नहीं किया जाना चाहिए।
फुटनोट
Server.MapPath(null)और इस आशय का भी उत्पादनServer.MapPath("") करेगा ।HostingEnvironment.MapPathक्योंकि इसकी आवश्यकता नहीं है HttpContext: stackoverflow.com/q/944219/3205
बस @ splattne के उत्तर पर थोड़ा विस्तार करें:
MapPath(string virtualPath) निम्नलिखित कॉल करता है:
public string MapPath(string virtualPath)
{
return this.MapPath(VirtualPath.CreateAllowNull(virtualPath));
}
MapPath(VirtualPath virtualPath)बदले में कॉल MapPath(VirtualPath virtualPath, VirtualPath baseVirtualDir, bool allowCrossAppMapping)जिसमें निम्नलिखित शामिल हैं:
//...
if (virtualPath == null)
{
virtualPath = VirtualPath.Create(".");
}
//...
इसलिए यदि आप कॉल करते हैं MapPath(null)या MapPath(""), आप प्रभावी रूप से कॉल कर रहे हैंMapPath(".")
1) Server.MapPath(".")- फ़ाइल के "वर्तमान भौतिक निर्देशिका" (जैसे aspx) निष्पादित किया जा रहा है।
पूर्व। मान लीजिए D:\WebApplications\Collage\Departments
2) Server.MapPath("..")- "मूल निर्देशिका" लौटाता है
पूर्व। D:\WebApplications\Collage
3) Server.MapPath("~")- "आवेदन के रूट के लिए भौतिक पथ" लौटाता है
पूर्व। D:\WebApplications\Collage
4) Server.MapPath("/")- डोमेन नेम के रूट में फिजिकल पाथ लौटाता है
पूर्व। C:\Inetpub\wwwroot