2017-03-03 5 views
0

Ich habe eine Web-api in Nancy 1.4.3. Ich habe einige Einstellungen in web.config im Abschnitt applicationSettings definiert. Ich frage mich, wie kann ich diese Einstellungen in einem Nancy-Modul (oder Bootstrapper) lesen? Da die herkömmlichen Methoden zum Lesen dieser Einstellungen wie in MVC/WebAPI in Nancy nicht verfügbar sind. Bitte beachten Sie, dass ich Nancy 1.4.3 nicht Nancy 2x und .net 4.6.1 nicht .net Kern verwende.Lesen appsettings in Nancy

Der Einfachheit halber, ich schreibe, wie der Abschnitt application sieht aus wie in 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> 

Antwort

1

sollten Sie in der Lage sein, es genau das gleiche wie jeder asp.net app zu lesen. Stellen Sie sicher, Sie Verweis hinzuzufügen:

System.Configuration 

In Web.config fügen Sie Ihre Schlüssel:

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

Fügen Sie System.Configuration in Ihrem Bootstrapper:

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); 
     } 
    } 
} 

Das ist es! :)

+0

Vielen Dank für Ihre Hilfe! Können Sie bitte .net Kernvariante auch schreiben? Oder wäre das ähnlich? (Ich will das nur voraus wissen, dass wenn ich in .net core arbeiten würde, weiß ich es schon, wenn es anders ist)? Natürlich, ich weiß, es gibt einen Unterschied, dass .net Core App appsettings.json anstelle von web.config haben wird. :) – Syed

+0

Die Verwendung von Nancy mit .net-Core, soweit ich weiß, erfordert die Verwendung von Vorabversionen 2+, wenn es nicht Produktion App ist, die in Ordnung ist. Die Verwendung des Konfigurationsmanagers mit Core ist anders, siehe hier: https://zimmergren.net/using-appsettings-json-instead-of-web-config-in-net-core-projects/ Ich habe es noch nicht mit probiert Nancy. –

+0

Ausgezeichneter Artikel. Genau das, wonach ich gesucht habe. Ich schulde dir einen großen Dank :) – Syed

0

Welche herkömmliche Weise würden Sie in WebAPI verwenden, die in Nancy fehlen?