2012-11-08 25 views
6

का उपयोग करते हुए डिबगिंग करते समय फ़ाइल के लिए पूर्ण पथ प्राप्त करें मेरे पास एक .NET एप्लिकेशन है जिसे मैं डीबग करने का प्रयास कर रहा हूं और मेरे एप्लिकेशन का हिस्सा मेरे प्रोजेक्ट से एक फ़ाइल लोड करता है। इस फ़ाइल मेंआईआईएस एक्सप्रेस

C:\Users\USER_FOLDER\Documents\Visual Studio 2012\Projects\MY_PROJECT\_templates\myFile.html 

मेरी कोड में में स्थित है, मैं फाइल करने के लिए एक रिश्तेदार पथ निर्दिष्ट और मेरी फाइल करने के लिए पूर्ण निर्देशिका पथ प्राप्त करने के लिए DirectoryInfo वर्ग का उपयोग करें:

string myFile = (new DirectoryInfo("_templates/myFile.html")).FullName; 

बहरहाल, यह रिटर्न निम्नलिखित पथ (अतिरिक्त \ के भागने पात्रों के रूप में):

"C:\\Program Files\\IIS Express\\_templates\\myFile.html" 

मैं रास्ता है कि जब आईआईएस एक्सप्रेस में डीबगिंग पहले पथ मैं सूचीबद्ध, तीसरे नहीं से मेल खाएंगे दिया जाता है उम्मीद कर रहा था। ऐसा क्यों है? क्या मेरे पास कुछ और चीज है जो मुझे अपने प्रोजेक्ट में स्थापित करने की ज़रूरत है ताकि वह पथ को सही तरीके से प्राप्त कर सके? मुझे लगता है कि यह तब नहीं होगा जब मैंने अपने कोड को आईआईएस 7 साइट पर तैनात किया है, लेकिन मुझे अभी तक उस परीक्षण स्तर पर नहीं मिला है।

+0

तो अपने लौटने 'प्रोग्राम फ़ाइलें \\ आईआईएस एक्सप्रेस \\' यह आपके कि निर्देशिका पथ से यह शुरू करने के बारे में इतना अधिक विशिष्ट अर्थ है निर्देशिका पथ। '_templates/myFile.html" को ध्यान में रखते हुए मूल निर्देशिका में एक स्थानीय निर्देशिका होगी जो इसकी विशिष्ट नहीं है। –

+0

उस नोट पर, सर्वर.मैपपैथ को कॉल करने से अधिक वर्णनात्मक होने के बिना सही पथ लौटा दिया गया। इसमें जाकर मैंने नहीं सोचा कि मुझे और अधिक वर्णनात्मक होना चाहिए क्योंकि अन्य भाषाओं में, मैं पथ का इलाज कर रहा था क्योंकि यह उस फ़ाइल के संदर्भ में लिपि के स्थान के सापेक्ष था, लेकिन इसकी सामग्री को पढ़ने के लिए। नेट सर्वर को पथ पर पूरी तरह से योग्य यूआरआई की आवश्यकता होती है और मैं इसे प्राप्त करने के लिए गलत ऑब्जेक्ट का उपयोग कर रहा था। क्यों मेरा _valid_ सवाल मतदान किया गया था परेशान है। –

उत्तर

5

उपयोग Server.MapPath:

Server.MapPath("~/_templates/myFile.html") 

या HttpServerUtility.MapPath:

HttpServerUtility.MapPath("~/_templates/myFile.html") 
+0

धन्यवाद! सर्वर.मैपपाथ ने मेरे लिए काम किया, लेकिन मुझे काम करने के लिए HttpServerUtility.MapPath नहीं मिला। HttpServerUtility के लिए यह शिकायत करता रहा कि 'गैर-स्थैतिक फ़ील्ड, विधि या प्रॉपर्टी' सिस्टम के लिए एक ऑब्जेक्ट रेफरेंस आवश्यक है। सिस्टम। Web.HttpServerUtility.MapPath (स्ट्रिंग) '' मैंने इसे लिखने के विभिन्न तरीकों की कोशिश की और कुछ भी काम नहीं किया, इसलिए मैं ' मैं बस सर्वर.मैपपाथ का उपयोग करने जा रहा हूँ। एक बार फिर धन्यवाद। –

+0

सुनिश्चित नहीं है कि यह एक ही स्थिति है लेकिन मेरे पास एक ही ऑब्जेक्ट संदर्भ समस्या थी। मैंने इसे HttpContext का उपयोग करके हल किया। जैसा कि - HttpContext.Current.Server.MapPath(); –