ZetCode

ASP.NET 启动

最后修改于 2025 年 4 月 3 日

在本文中,我们将探讨 ASP.NET 8 中的 Startup 类。此类对于配置服务和应用程序的请求管道至关重要。

ASP.NET 是一个跨平台的、高性能的框架,用于构建现代 Web 应用程序。Startup 类集中了 ASP.NET 应用程序的配置。

基本定义

ASP.NET 中的 Startup 类负责配置服务和应用程序的请求处理管道。它包含两个主要方法。

ConfigureServices 用于将服务添加到依赖注入容器。Configure 定义了应用程序如何响应 HTTP 请求。

在 .NET 6 及更高版本中,Startup 模式是可选的,但仍然受支持。许多应用程序现在使用最小托管模型,所有配置都在 Program.cs 中完成。

ASP.NET Startup 示例

以下示例演示了一个基本的 ASP.NET 应用程序,该应用程序在 .NET 8 中使用了 Startup 类模式。

Program.cs
var builder = WebApplication.CreateBuilder(args);

// Configure the host to use Startup class
builder.Host.ConfigureWebHostDefaults(webBuilder =>
{
    webBuilder.UseStartup<Startup>();
});

var app = builder.Build();
app.Run();

这会设置应用程序主机以使用单独的 Startup 类进行配置。UseStartup 方法指定了 Startup 类。

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

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime
    public void ConfigureServices(IServiceCollection services)
    {
        // Add services to the container
        services.AddControllers();
        services.AddSwaggerGen();
        
        // Add custom services
        services.AddSingleton<IWeatherService, WeatherService>();
        
        // Configure options
        services.Configure<AppSettings>(Configuration.GetSection("AppSettings"));
    }

    // This method gets called by the runtime
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            app.UseSwaggerUI();
        }

        app.UseHttpsRedirection();
        app.UseRouting();
        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
            endpoints.MapGet("/", async context =>
            {
                await context.Response.WriteAsync("Hello World!");
            });
        });
    }
}

Startup 类演示了 ConfigureServices 中的服务配置和 Configure 中的中间件管道设置。它使用依赖注入进行配置。

ConfigureServices 添加了 MVC 控制器、Swagger 文档、自定义天气服务,并从配置系统配置应用程序设置。

Configure 使用开发异常页面、HTTPS 重定向、路由、授权和终结点配置来设置请求管道。环境检查启用了特定于开发的特性。

此示例展示了服务注册和请求管道配置之间的关注点分离。Startup 类仍然是组织 ASP.NET 应用程序设置的强大模式。

来源

Microsoft ASP.NET Startup 文档

在本文中,我们探讨了 ASP.NET 8 中的 Startup 类。这种强大的模式有助于组织应用程序配置和中间件设置。

作者

我叫 Jan Bodnar,是一位充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有十多年的经验。

列出所有 ASP.NET 教程