2010-12-10 11 views
5

विभिन्न कारणों के लिए से फ़ाइल जाओ, विकास में मैं कभी कभी, ~/के लिए कहते हैं, एक अनुरोध रोकना MyStyle.css चाहतेASP.NET MVC आभासी पथ

क्या मैं निम्नलिखित स्निपेट काम करने के है क्या करना चाहते हैं:

string absFile = VirtualPathUtility.ToAbsolute(file); 
return System.IO.File.ReadAllText(absFile); 

यह निरपेक्ष पथ हालांकि वेबसर्वर के लिए पूर्ण है, यह करने के लिए "C: \ जो कुछ भी" मैप करने के लिए नहीं जा रहा है। फाइल सिस्टम पर जाने के लिए कोई समकक्ष तरीका है? (या ReadFromVirtualPath इत्यादि?)

उत्तर

18

अनुरोधित अनुप्रयोग पथ के लिए फ़ाइल सिस्टम पथ प्राप्त करने के लिए Server.MapPath() का उपयोग करें।

string absFile = Server.MapPath(file); 

या

string absFile = HttpContext.Current.Server.MapPath(file); 
6

तुम भी एक स्ट्रीम अपनी फ़ाइल पर इंगित पाने के लिए VirtualPathProvider पर OpenFile विधि का उपयोग कर सकते हैं

var stream = HostingEnvironment.VirtualPathProvider.OpenFile(file); 
var text = new StreamReader(stream).ReadToEnd(); 

आम तौर पर इस दृष्टिकोण बेहतर है क्योंकि अब आप कर सकते हैं, पर बाद में बिंदु VirtualPathProvider लागू करें, जहां डेटाबेस में स्थित सभी सीएसएस फ़ाइलों को कहें।