在南希阅读 appsettings

Reading appsettings in Nancy

我在 Nancy 1.4.3 中有一个网站 api。我在 applicationSettings 部分下的 web.config 中定义了一些设置。我想知道如何在 Nancy 模块(或引导程序)中读取这些设置?因为 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>

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

您应该能够像阅读任何 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);
        }
    }
}

就是这样! :)

对于网络应用程序,我认为您真的应该使用 System.Web.Configuration:

using System.Web.Configuration

例如:

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

See here for more information.