相关疑难解决方法(0)

ASP.NET Core 6+ 如何在启动过程中访问配置

在早期版本中,我们有 Startup.cs 类,并在Startup文件中获取配置对象,如下所示。

public class Startup 
{
    private readonly IHostEnvironment environment;
    private readonly IConfiguration config;

    public Startup(IConfiguration configuration, IHostEnvironment environment) 
    {
        this.config = configuration;
        this.environment = environment;
    }

    public void ConfigureServices(IServiceCollection services) 
    {
        // Add Services
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env) 
    {
        // Add Middlewares
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,在 .NET 6 及更高版本(使用 Visual Studio 2022)中,我们看不到Startup.cs类。看来它的日子屈指可数了。那么我们如何获取配置(IConfiguration)和托管环境(IHostEnvironment)等对象

我们如何获取这些对象,也就是说从 appsettings 读取配置?目前,Program.cs 文件如下所示。

using Festify.Database;
using Microsoft.EntityFrameworkCore;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

builder.Services.AddDbContext<FestifyContext>();


//////////////////////////////////////////////// …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core .net-6.0 .net-7.0

255
推荐指数
7
解决办法
25万
查看次数

阅读Main Program.cs中的appsettings.json

首先,我的主要目的是动态地为我的应用程序设置IP和端口.

我正在使用IConfiguration注入一个json配置文件,就像一些教程提到的那样.

但是,我无法在Program.cs中检索配置,因为我WebHostBuilder将同时使用StartUp和Url.

所以在主机建立时,我的配置中没有任何内容.

WebProtocolSettings settings_Web = new WebProtocolSettings();
var host = new WebHostBuilder()
                .UseIISIntegration()
                .UseKestrel()
                .UseContentRoot(Directory.GetCurrentDirectory())
                .UseStartup<Startup>()
                .UseUrls(settings_Web.Url + ":" + settings_Web.Port)
                .Build();
Run Code Online (Sandbox Code Playgroud)

在Startup.cs中

public Startup(IHostingEnvironment env)
{
    // Set up configuration sources.
    var builder = new ConfigurationBuilder()
        .SetBasePath(env.ContentRootPath)
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);

    Configuration = builder.Build();
}

public IConfigurationRoot Configuration { get; set; }

public void ConfigureServices(IServiceCollection services)
{
    // Adds services required for using options.
    services.AddOptions();

    var _WebProtocolSettings = Configuration.GetSection("WebProtocolSettings");

    // Register the …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-1.0

29
推荐指数
3
解决办法
2万
查看次数

.NET 6 及更高版本中的 using 语句/指令在哪里

我已经开始使用 Visual Studio 2022 Preview 几天了。

我第一次震惊,没有 Startup.cs。没关系,稍微阅读一下,我知道启动已被删除。

今天又挨了一巴掌。我没有看到任何 using 语句。这里是。

我刚刚创建了一个全新的 .NET 6 Web 应用程序,当我将鼠标悬停在 WebApplication 类上时,我意识到它位于 Microsoft.AspNetCore.Builder 命名空间中。生成的 Program.cs 类如下所示。

ASP.NET core 6 Web 应用程序中的 Program.cs 类

那么using Microsoft.AspNetCore.Builder;声明在哪里呢?

有什么魔力?为什么.net 日益变得神秘?

完整的 Program.cs 文件如下。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/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(); …
Run Code Online (Sandbox Code Playgroud)

c# c#-9.0 .net-6.0 c#-10.0

14
推荐指数
1
解决办法
1万
查看次数