【问题标题】:Reading appsettings in Nancy在南希阅读 appsettings
【发布时间】:2017-07-23 19:12:37
【问题描述】:

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

为简单起见,我正在编写 web.config 中 applicationSettings 部分的外观:

<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>

【问题讨论】:

    标签: asp.net-web-api web-config nancy


    【解决方案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);
            }
        }
    }
    

    就是这样! :)

    【讨论】:

    • 感谢您的帮助!你也可以写.net核心变体吗?还是会类似? (我只是想提前知道,这样当我在.net core 中工作时,我已经知道了,如果它不同的话)?当然,我知道 .net 核心应用程序将有 appsettings.json 而不是 web.config 是有区别的。 :)
    • 据我所知,将 nancy 与 .net 核心一起使用需要使用预发布版本 2+,如果它不是生产应用程序就可以了。使用带有核心的配置管理器是不同的,请参考这里:zimmergren.net/…我还没有用 Nancy 尝试过。
    • 优秀的文章。正是我想要的。我非常感谢你:)
    【解决方案2】:

    您会在 WebApi 中使用 Nancy 中缺少的哪些常规方法?

    【讨论】:

      【解决方案3】:

      对于一个网络应用,我认为你真的应该使用System.Web.Configuration

      using System.Web.Configuration
      

      例如:

        var someVar = WebConfigurationManager.AppSettings["SomeSetting"];
      

      See here for more information.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-30
        • 2010-11-06
        • 2022-08-10
        • 2020-10-02
        • 1970-01-01
        • 1970-01-01
        • 2012-10-06
        相关资源
        最近更新 更多