2016-11-29 16 views
5

की सेवा मैं कुछ बैकेंड संसाधन और दृश्यपटल जो डिफ़ॉल्ट प्रोजेक्ट फ़ोल्डर wwwroot में रहता है के रूप में स्थिर फाइलों के साथ नैन्सी का उपयोग कर एक .NET कोर परियोजना के रूप में एक न्यूनतम व्यवहार्य वेब साइट बनाने के लिए कोशिश कर रहा हूँ। मुख्य समस्या यह है कि मुझे समझ में नहीं आता कि ऐप को स्थैतिक फाइलों के साथ कैसे प्रतिक्रिया दें, क्योंकि डिफ़ॉल्ट सम्मेलन नए .NET कोर प्रोजेक्ट सिस्टम पर लागू नहीं होते हैं।नेट कोर नैन्सी आवेदन स्टैटिक फ़ाइलें

बिल्डिंग नैन्सी क्लासिक .नेट फ्रेमवर्क अनुप्रयोगों के रूप में आवेदन पत्र अच्छी तरह से प्रलेखित है और वहाँ यह कैसे करना है, वेब पर कई नमूने हैं। लेकिन .NET कोर प्रोजेक्ट्स (.xproj) क्लासिक .NET Framework प्रोजेक्ट्स (.csproj) से बहुत अलग है। मुझे नई परियोजना प्रणाली बहुत पसंद है, लेकिन मुझे समझ में नहीं आता कि इसमें नैन्सी भागों को कैसे एकीकृत किया जाए। और दस्तावेज और नमूने की कमी है कि इसे कैसे करें।

उत्तर

7

टीएल; डीआर: GitHub repository, जहां सभी आवश्यक नलसाजी कोड के साथ डेमो परियोजनाएं रहती हैं। नैन्सी बनाम 1.4.3 के साथ-साथ prerelease v। 2.0.0-barneyrubble के लिए। ।

नैन्सी वी 2, जो नेट कोर और .NET स्टैंडर्ड का समर्थन करता है, प्री-रिलीज़ राज्य में अब भी है तो भले ही आप स्थिर वी के साथ रहना चाहते हैं 1 शाखा -। कोई बात नहीं।

1) बनाएं एक नया खाली ASP.NET कोर वेब अनुप्रयोग

2) :

यहाँ कैसे खरोंच, जो मेरे लिए काम किया से यह करने के लिए पर एक कदम-दर-कदम है ओपन project.json (अनिवार्य आप नैन्सी वी के साथ रहना पसंद करते हैं जाएगा 1।), "net46" को "netcoreapp1.0" से "Microsoft.NETCore.App" निर्भरता और परिवर्तन लक्ष्य ढांचे को हटाने, तो frameworks अनुभाग है कि ऐसा दिखाई देगा:

"frameworks": { 
    "net46": {} 
}, 

3) प्रोजेक्ट.जेसन: "Microsoft.AspNetCore.Owin" और "Nancy" पर निम्न निर्भरता जोड़ें। वी के लिए project.json की निर्भरता अनुभाग लिखने के समय 1:।

"dependencies": { 
    // Ommited dependencies 
    "Microsoft.AspNetCore.Owin": "1.0.0", 
    "Nancy": "1.4.3" 
}, 

वी के लिए 2:।

"dependencies": { 
    // Ommited dependencies 
    "Microsoft.AspNetCore.Owin": "1.0.0", 
    "Nancy": "2.0.0-barneyrubble" 
}, 

4) एक वर्ग IRootPathProvider को लागू करने बनाएँ और अपने wwwroot फ़ोल्डर के लिए पथ प्रदान करेगा IHostingEnvironment वस्तु का उपयोग करके रनटाइम पर (WebRootPath संपत्ति):

public class AppRootPathProvider : IRootPathProvider 
{ 
    private readonly IHostingEnvironment _environment; 

    public AppRootPathProvider(IHostingEnvironment environment) 
    { 
     _environment = environment; 
    } 
    public string GetRootPath() 
    { 
     return _environment.WebRootPath; 
    } 
} 

5) एसी बनाएं लड़की DefaultNancyBootstrapper से ली गई है, जो IHostingEnvironment वस्तु पुनः प्राप्त है और यह पहले से परिभाषित रूट प्रदाता को पारित करेंगे। यह भी अपने स्वयं के साथ डिफ़ॉल्ट StaticContentsConventions बदल जाएगा:

public class AppNancyBootstrapper : DefaultNancyBootstrapper 
{ 
    public AppNancyBootstrapper(IHostingEnvironment environment) 
    { 
     RootPathProvider = new AppRootPathProvider(environment); 
    } 

    protected override void ConfigureConventions(NancyConventions conventions) 
    { 
     base.ConfigureConventions(conventions); 

     conventions.StaticContentsConventions.AddDirectory("css"); 
     conventions.StaticContentsConventions.AddDirectory("js"); 
     conventions.StaticContentsConventions.AddDirectory("fonts"); 
    } 

    protected override IRootPathProvider RootPathProvider { get; } 
} 

6) ओपन Startup वर्ग और यह एक साथ Configure विधि में अंतिम पंक्ति की जगह:

app.UseOwin(x => x.UseNancy(options => options.Bootstrapper = new AppNancyBootstrapper(env))); 

यह Bootstrapper पिछले चरण में बनाया लाभ उठाता है।

7) अब अपने NancyModule परिभाषित करने के लिए समय है। वी1:

public class AppNancyModule : NancyModule 
{ 
    public AppNancyModule() 
    { 
     Get["/"] = _ => View["index"]; 
     Get["/{fileName}"] = parameters => View[parameters.fileName]; 
    } 
} 

वी 2:

public class AppNancyModule : NancyModule 
{ 
    public AppNancyModule() 
    { 
     Get("/", _ => View["index"]); 
     Get("/{fileName}", parameters => View[parameters.fileName]); 
    } 
} 

और तुम जाने के लिए अच्छा कर रहे हैं! बस अपनी स्थिर फाइलें wwwroot में रखें - और आग लगें।

संबंधित मुद्दे