2013-02-11 52 views
14

मुझे नैन्सी ढांचे में System.Web.HttpContext.Current.Server.MapPath() के लिए नैन्सी में समकक्ष नहीं लग रहा है।नैन्सी: क्या कोई सर्वर है। मैपपाथ ("~ /") समकक्ष?

मैं बस एप्लिकेशन सेवा से संबंधित एक टेक्स्टफाइल लोड करना चाहता हूं।

मैं विधानसभा

using Nancy; 
using System; 

namespace Nancy.Hosting.Self 
{ 
    public class FileSystemRootPathProvider : IRootPathProvider, IHideObjectMembers 
    { 
     public FileSystemRootPathProvider(); 

     public string GetRootPath(); 
    } 
} 

मैं कैसे उपयोग करने के लिए यकीन नहीं है में देख।

अद्यतन: मैंने बस कुछ भी लोड करने की आवश्यकता है जिसे मुझे बिन/रिलेज़/निर्देशिका से पढ़ा/लिखा जा सकता है। क्या यह नैन्सी सेल्फ होस्टिंग पर्यावरण में ऐसा करने का अनुमानित तरीका है? मुझे लगता है कि समझ में आता है।

उत्तर

10

आप IRootPathProvider पर निर्भरता लेने के लिए और का उपयोग करें कि GetRootPath() है कि आप अपने आवेदन की जड़ दे देंगे कॉल करने के लिए और आप यहां से जोड़ सकते हैं कर सकते हैं

+0

मैं हमेशा पथ का उपयोग करें। जोड़ना। यह केवल एक उत्पादन गुणवत्ता प्रोजेक्ट लेता है ताकि मुझे कभी भी पथ स्ट्रिंग को मैन्युअल रूप से कभी भी गठबंधन न किया जा सके =) – FlavorScape

+0

IHideObjectMembers को कार्यान्वित किया जाना चाहिए? – Cynede

+0

सोचा था कि केवल इंटेलिजेंस/विजुअल स्टूडियो के लिए था, इसलिए यह आपके ऊपर है। यह केवल कोड पूर्ण होने के लिए आधार कार्यों को छुपाता है। – FlavorScape

0

(मैं Path.Combine का उपयोग कर की सिफारिश करेंगे) आप एक स्थिर में इस की जरूरत है वर्ग (जैसे कि एक HtmlHelpers विस्तार के रूप में) जहां IRootPathProvider निर्भरता इंजेक्शन नहीं किया जा सकता, कम से कम AFAIK, आप AppDomain.CurrentDomain.BaseDirectory का उपयोग कर सकते है जो DefaultRootPathProvider नेट 4.x के लिए हुड के नीचे का उपयोग करता है: https://github.com/NancyFx/Nancy/blob/master/src/Nancy/DefaultRootPathProvider.cs