tag page net mvc asp c# dependency-injection asp.net-core-mvc appsettings

c# - page - forms asp net core



¿Cómo puedo recuperar la configuración de AppSettings en Asp.Net MVC 6? (1)

Suponiendo que estoy usando el nuevo marco de DepencyInjection para configurar mis clases y dependencias en el nuevo ASP.Net/vNext.

¿Cómo puedo usar, ¿Cómo puedo obtener mi configuración de configuración predefinida?

public void ConfigureServices(IServiceCollection services) { // Add Application settings to the services container. services.Configure<AppSettings>(Configuration.GetSubKey("AppSettings")); // Add EF services to the services container. services.AddEntityFramework() .AddSqlServer() .AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])); // Add Identity services to the services container. services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // Configure the options for the authentication middleware. // You can add options for Google, Twitter and other middleware as shown below. // For more information see http://go.microsoft.com/fwlink/?LinkID=532715 services.Configure<FacebookAuthenticationOptions>(options => { options.AppId = Configuration["Authentication:Facebook:AppId"]; options.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; }); services.Configure<MicrosoftAccountAuthenticationOptions>(options => { options.ClientId = Configuration["Authentication:MicrosoftAccount:ClientId"]; options.ClientSecret = Configuration["Authentication:MicrosoftAccount:ClientSecret"]; }); // Add MVC services to the services container. services.AddMvc(); services.AddSingleton(a => { //AppSettings settingsModel = ?? //GET CONFIGURATION SETTINGS FILLED // TECHNICAL ARTIFICE TO RETRIEVE CURRENT SETTINGS //var settingsModel = new AppSettings(); //var config = Configuration.GetSubKey("AppSettings"); //foreach (var item in typeof(AppSettings).GetProperties().Where(b => b.CanWrite)) { //item.SetValue(settingsModel, config.Get(item.Name)); } return new FooService(settingsModel); }); //Uncomment the following line to add Web API services which makes it easier to port Web API 2 controllers. //You will also need to add the Microsoft.AspNet.Mvc.WebApiCompatShim package to the ''dependencies'' section of project.json. services.AddWebApiConventions(); }


Puede obtener AppSettings en su FooService inyectando IOptions<AppSettings> DI service en su constructor.

La interfaz IOptions<> es parte de algo llamado Modelo de Opciones que se utiliza para acceder a la configuración de estilo de POCO (por ejemplo, su AppSettings) en su aplicación. Las llamadas como services.Configure<AppSettings>( y services.Configure<FacebookAuthenticationOptions>(options => en su ejemplo anterior, realmente registran servicios DI que a su vez son utilizados por un servicio DI llamado OptionsManager al resolver solicitudes para IOptions<> .

Ejemplo:

public class FooService { private readonly AppSettings _settings; public FooService(IOptions<AppSettings> options) { _settings = options.Options; } .... .... }