2017-03-03 38 views
0

我在南希1.4.3有一个web api。我在application.tings部分的web.config中定义了一些设置。我想知道如何在Nancy模块(或Bootstrapper)中读取这些设置?因为在MVC/WebAPI中读取这些设置的传统方式在Nancy中不可用。 请考虑我使用的是Nancy 1.4.3而不是Nancy 2x和.net 4.6.1而不是.net core。阅读南希的appsettings

为了简便起见,我写怎么的applicationSettings部分看起来像在web.config中:

<applicationSettings> 
    <Applicaton1.Properties.Settings> 
     <setting name="DefaultUserID" serializeAs="String"> 
     <value>BatchReader</value> 
     </setting> 
     <setting name="DefaultPaymentFrequencyCode" serializeAs="String"> 
     <value>0</value> 
     </setting> 
    <setting name="DefaultPaymentTypeCode" serializeAs="String"> 
     <value>1</value> 
    </setting> 
</Application1.Properties.Settings> 

回答

1

你应该能够阅读它完全相同的任何asp.net应用程序。 确保你添加引用:

System.Configuration 

在web.config中添加键值:

<appSettings> 
<add key="key" value="hello key" /> 
</appSettings> 

在你的引导程序包括System.Configuration:

namespace Test 
{ 
    using System.Configuration; 
    using Nancy; 
    using Nancy.Authentication.Forms; 
    using Nancy.Bootstrapper; 
    using Nancy.TinyIoc; 


    public class Bootstrapper : DefaultNancyBootstrapper 
    { 
     protected override void ApplicationStartup (TinyIoCContainer container, 
                IPipelines pipelines) 
     { 
      base.ApplicationStartup (container, pipelines); 
      StaticConfiguration.DisableErrorTraces = false; 
      StaticConfiguration.EnableRequestTracing = true; 
     } 

     protected override void ConfigureApplicationContainer (TinyIoCContainer 
                   container) 
     { 
      base.ConfigureApplicationContainer (container); 

      var key = ConfigurationManager 
             .AppSettings.Get ("key") 

     } 


     protected override void ConfigureRequestContainer (TinyIoCContainer container, 
                  NancyContext context) 
     { 
      base.ConfigureRequestContainer (container, context); 

     } 

     protected override void RequestStartup (TinyIoCContainer container, 
               IPipelines pipelines, 
               NancyContext context) 
     { 
      base.RequestStartup (container, pipelines, context); 
     } 
    } 
} 

完蛋了! :)

+0

谢谢您的帮助!你能写一个.net核心变体吗?或者这是相似的? (我只是想提前知道,以便我在.NET内核中工作时,如果它不同,我就知道了)? Ofcourse,我知道有一个区别,.net核心应用程序将具有appsettings.json而不是web.config。 :) – Syed

+0

根据我所知,使用.net核心的nancy需要使用预发布版本2+,如果它的生产应用程序不是很好。在核心使用配置管理器是不同的在这里引用:https://zimmergren.net/using-appsettings-json-instead-of-web-config-in-net-core-projects/我还没有尝试过南希。 –

+0

优秀的文章。正是我在找的东西。我非常感谢你:) – Syed

0

,你会在缺少在南希的WebAPI用什么常规方法?