Bruke IConfiguration globalt i mvc6

stemmer
11

Jeg har sannsynligvis vært stirrer på dette for å lenge, men jeg har hoppet inn MVC6 for asp.net for de siste dagene, mens jeg virkelig nyter dette, kan jeg ikke synes å finne en praktisk måte å få tilgang til Configuration etter at det er definert i Start.cs med

Configuration = new Configuration()
    .AddJsonFile(config.json)
    ...

Så må jeg legge det til DI eller er det allerede er der? Eller bør jeg opprette en ny forekomst når jeg trenger å bruke den, så det er mulig å lage ulike konfigurasjoner (som for IIdentityMessageService) opprette en sendgrid.json og legg det i Tjenesten i seg selv?

Det er sannsynligvis en veldig enkel løsning, men som jeg sa har jeg ser på dette i flere dager nå.

Publisert på 27/11/2014 klokken 22:15
kilden bruker
På andre språk...                            


1 svar

stemmer
15

Bare gjøre lasting av konfigurasjoner i Startup.cs. Hvis du trenger dem andre steder senere kan du laste inn verdiene i passende Pocos og registrere dem i DI, slik at du kan injisere dem der du trenger dem. Dette lar deg organisere konfigurasjonen i forskjellige filer, og i forskjellige Pocos på en måte som gir mening for søknaden din. Det er allerede innebygd støtte for dette i avhengighet injeksjon. Her er hvordan du ville gjøre det:

En POCO å sette konfigurasjonen i:

public class SomeOptions
{
    public string EndpointUrl { get; set; }
}

Din Startup.cs laster konfigurasjonen i POCO og registrerer den i DI.

public class Startup
{
    public Startup()
    {
        Configuration = new Configuration()
                    .AddJsonFile("Config.json")
                    .AddEnvironmentVariables();
    }

    public IConfiguration Configuration { get; set; }

    public void Configure(IApplicationBuilder app)
    {
        app.UseMvc();
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<SomeOptions>(options => 
            options.EndpointUrl = Configuration.Get("EndpointUrl"));

        services.AddMvc();
    }
}

Så i kontrolleren hente konfigurasjons POCO du opprettet i Startup.cs gjennom avhengighet injeksjon som dette:

public class SomeController
{
    private string _endpointUrl;
    public SomeController(IOptions<SomeOptions> options)
    {
        _endpointUrl = options.Options.EndpointUrl;
    }
}

Testet med 1.0.0-beta1 bygger på aspnet5.

For mer informasjon se Grunnlaget for ASP.Net 5 Konfigurasjon .

Svarte 28/11/2014 kl. 21:07
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more