簡體   English   中英

在Visual studio 2022中,如何像startup.cs一樣在Program.cs中添加IConfiguration和配置?

[英]In Visual studio 2022, How To add IConfiguration and add configuration in Program.cs like startup.cs?

在此處輸入圖像描述 我需要添加配置並進行相應的自定義。 在之前版本的startup.cs中有一個class是專門用來配置的。 我需要知道如何在 program.cs 中添加配置

在之前版本的startup.cs中有一個class是專門用來配置的。 我需要知道如何在 program.cs 中添加配置

我們做得到:

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

IConfiguration接口位於Microsoft.Extensions.Configuration命名空間中。 您可以安裝Microsoft.Extensions.Configuration nuget,並訪問 IConfiguration 界面。

您可以獲得這樣的配置:

IConfiguration configuration = builder.Configuration;

你可以做這樣的事情來模擬 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;
}

現在,您可以在您的 controller 或服務中使用 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?}");
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM