c# - .NET वेब एप्लिकेशन में वर्तमान निर्देशिका प्राप्त करना




asp.net directory (2)

इस कोड का प्रयोग करें:

 HttpContext.Current.Server.MapPath("~")

विस्तृत संदर्भ:

Server.MapPath किसी भौतिक निर्देशिका में मैप करने के लिए सापेक्ष या आभासी पथ निर्दिष्ट करता है।

  • Server.MapPath(".") फ़ाइल की वर्तमान भौतिक निर्देशिका (जैसे एएसपीएक्स) निष्पादित किया जाता है
  • Server.MapPath("..") मूल निर्देशिका देता है
  • Server.MapPath("~") अनुप्रयोग की जड़ पर भौतिक पथ देता है
  • Server.MapPath("/") डोमेन नाम की रूट पर भौतिक पथ देता है (आवश्यक रूप से एप्लिकेशन की जड़ के समान नहीं है)

एक उदाहरण:

मान लीजिए कि आपने एक वेब साइट एप्लिकेशन ( http://www.example.com/ ) को इंगित किया है

C:\Inetpub\wwwroot

और अपने दुकान आवेदन (आईआईएस में वर्चुअल निर्देशिका के रूप में उप वेब, अनुप्रयोग के रूप में चिह्नित) स्थापित किया

D:\WebApps\shop

उदाहरण के लिए, यदि आप निम्न अनुरोध में Server.MapPath को कॉल करते हैं:

http://www.example.com/shop/products/GetProduct.aspx?id=2342

फिर:

Server.MapPath(".") returns D:\WebApps\shop\products
Server.MapPath("..") returns D:\WebApps\shop
Server.MapPath("~") returns D:\WebApps\shop
Server.MapPath("/") returns C:\Inetpub\wwwroot
Server.MapPath("/shop") returns D:\WebApps\shop

यदि पथ या तो आगे (/) या पिछड़ा स्लैश () से शुरू होता है, तो MapPath विधि पथ लौटाती है जैसे पथ पूर्ण, वर्चुअल पथ था।

यदि पथ स्लैश से शुरू नहीं होता है, तो MapPath विधि संसाधित होने वाले अनुरोध की निर्देशिका से संबंधित पथ लौटाती है।

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

फुटनोट

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

तो मेरे पास एक वेब प्रोजेक्ट है, और मैं c # method Directory.GetCurrentDirectory() का उपयोग कर वेबसाइट की मूल निर्देशिका प्राप्त करने का प्रयास कर रहा हूं। मैं एक स्थिर पथ का उपयोग नहीं करना चाहता क्योंकि फ़ाइल स्थान भविष्य में बदल रहे हैं। यह विधि मेरी imageProcess.aspx.cs फ़ाइल में चल रही है, लेकिन जहां मैंने सोचा कि यह वापस आ जाएगा:

C:\Users\tcbl\documents\visual studio 2010\Projects\ModelMonitoring\ModelMonitoring\imageProcess.aspx.cs

मैं इसके बजाय हो रहा हूँ:

C:\Program Files\Common Files\Microsoft Shared\DevServer\10.0\

क्या कोई यह समझा सकता है कि यह क्यों हो रहा है और एक संभावित समाधान क्या हो सकता है? बहुत बहुत धन्यवाद।


वर्तमान निर्देशिका एक सिस्टम स्तरीय सुविधा है; यह उस निर्देशिका को देता है जिस पर सर्वर लॉन्च किया गया था। इसका वेबसाइट से कोई लेना देना नहीं है।

आप HttpRuntime.AppDomainAppPath चाहते हैं। HttpRuntime.AppDomainAppPath

यदि आप HTTP अनुरोध में हैं, तो आप Server.MapPath("~/Whatever") को भी कॉल कर सकते हैं।






filepath