在Visual studio 2022中,如何添加IConfiguration以及在Program.cs中添加配置(如startup.cs)?

cyej8jka  于 2022-11-30  发布在  其他
关注(0)|答案(4)|浏览(716)


我需要添加一个配置并进行相应的自定义。在startup.cs的以前版本中有一个专门用于配置的类。我需要知道如何在program.cs中添加配置
在startup.cs之前的版本中,有一个专门用于配置的类。我需要知道如何在program.cs中添加配置

8yoxcaq7

8yoxcaq71#

我们可以这样做:

var builder = WebApplication.CreateBuilder(args);
//Get the instance of the IConfiguration service
var configuration = builder.Configuration;
//We can configure configuration variables of type IConfiguration and get a value 
var vTestValue = configuration.GetValue<string>("TestValue");
nzk0hqpo

nzk0hqpo2#

IConfiguration接口位于Microsoft.Extensions.Configuration命名空间中您可以安装Microsoft.Extensions.Configuration nuget,并访问IConfiguration接口

ac1kyiln

ac1kyiln3#

您可以获得如下配置:
IConfiguration configuration = builder.Configuration;

pepwfjgg

pepwfjgg4#

你可以这样做来模拟Startup.cs,然后得到IConfiguration。我个人认为Startup.cs更容易阅读。在你的应用程序设置中:

"Employee": {
    "Title": "Mr",
    "Name": "Joe Smith"
 }

相应的POCO:

public class EmployeeOptions
{
    public const string Employee = "Employee";
    public string Title { get; set; } = String.Empty;
    public string Name { get; set; } = String.Empty;
}

现在,您可以在控制器或服务中使用IOptions或IOptionsSnapshot,也可以像下面那样在Startup.cs中进行依赖项注入。

public class Program
{
    public static void Main(string[] args)
    {
            var builder = WebApplication.CreateBuilder(args);
            var startup = new Startup(builder.Configuration);
            startup.RegisterServices(builder.Services);

            var app = builder.Build();
            startup.SetupMiddlewares(app);

            app.Run();
  } }

然后创建一个名为Startup.cs的文件并注入IConfiguration。

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    public void RegisterServices(IServiceCollection services)
    {
        services.Configure<EmployeeOptions>(
        Configuration.GetSection(EmployeeOptions.Employee));
    }

    public void SetupMiddlewares(WebApplication app)
    {
        // Configure the HTTP request pipeline.
        if (!app.Environment.IsDevelopment())
        {
            app.UseExceptionHandler("/Home/Error");
            // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
            app.UseHsts();
        }

        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();

        app.UseAuthentication();
        app.UseAuthorization();
        
        app.MapControllerRoute(
            name: "default",
            pattern: "{controller=Home}/{action=Index}/{id?}");
    }
}

相关问题