Server.MapPath ("।"), Server.MapPath ("~"), Server.MapPath (@ "\"), Server.MapPath ("/")। अंतर क्या है?


जवाबों:


809

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\products
  • Server.MapPath("..") रिटर्न D:\WebApps\shop
  • Server.MapPath("~") रिटर्न D:\WebApps\shop
  • Server.MapPath("/") रिटर्न C:\Inetpub\wwwroot
  • Server.MapPath("/shop") रिटर्न D:\WebApps\shop

यदि पथ या तो फ़ॉरवर्ड स्लैश ( /) या बैकवर्ड स्लैश ( \) से शुरू होता है, तो एक MapPath()पथ देता है जैसे कि पथ पूर्ण, आभासी पथ था।

यदि पथ स्लैश से प्रारंभ नहीं होता है, तो MapPath()संसाधित किए जा रहे अनुरोध की निर्देशिका के सापेक्ष एक पथ देता है।

नोट: C # में, @शब्दशः शाब्दिक स्ट्रिंग ऑपरेटर है जिसका अर्थ है कि स्ट्रिंग को "जैसा है" का उपयोग किया जाना चाहिए और भागने के अनुक्रम के लिए संसाधित नहीं किया जाना चाहिए।

फुटनोट

  1. Server.MapPath(null)और इस आशय का भी उत्पादनServer.MapPath("") करेगा ।

44
अति उत्कृष्ट। हम Server.Bloody.MapPath से जूझ रहे हैं। धन्यवाद
GBN

26
आप का उपयोग करना बेहतर होगा HostingEnvironment.MapPathक्योंकि इसकी आवश्यकता नहीं है HttpContext: stackoverflow.com/q/944219/3205
skolima

25

बस @ 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(".")


4

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.