ASP.NET AddControllers
最后修改于 2025 年 4 月 3 日
在本文中,我们将探讨 ASP.NET 8 中的 AddControllers 方法。此方法对于在 ASP.NET Core 应用程序中设置 Web API 控制器至关重要。
ASP.NET Core 是一个用于构建现代 Web 应用程序的跨平台框架。AddControllers 配置了 API 控制器支持所需的核心服务。
基本定义
AddControllers 方法是 ASP.NET Core 依赖注入系统的一部分。它使用属性路由向 MVC 控制器注册所需的服务。
此方法在应用程序启动期间的 Program.cs 文件中调用。它支持模型绑定、验证和 API 特定约定等功能。
AddControllers 通常用于 Web API 项目,而不是 Razor Pages 或 MVC 应用程序。它提供了一个轻量级的设置,专注于 API 开发。
ASP.NET AddControllers 示例
以下示例演示了使用 AddControllers 的基本 Web API 设置。
var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); var app = builder.Build(); // Configure the HTTP request pipeline. app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.Run();
此代码设置了一个最小化的 Web API 应用程序。AddControllers 方法注册了 API 控制器所需的服务。MapControllers 启用了属性路由。
using Microsoft.AspNetCore.Mvc;
namespace WebApiExample.Controllers;
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
private static readonly string[] Summaries = new[]
{
"Freezing", "Bracing", "Chilly", "Cool", "Mild",
"Warm", "Balmy", "Hot", "Sweltering", "Scorching"
};
private readonly ILogger<WeatherForecastController> _logger;
public WeatherForecastController(ILogger<WeatherForecastController> logger)
{
_logger = logger;
}
[HttpGet(Name = "GetWeatherForecast")]
public IEnumerable<WeatherForecast> Get()
{
return Enumerable.Range(1, 5).Select(index => new WeatherForecast
{
Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
TemperatureC = Random.Shared.Next(-20, 55),
Summary = Summaries[Random.Shared.Next(Summaries.Length)]
})
.ToArray();
}
}
public record WeatherForecast
{
public DateOnly Date { get; set; }
public int TemperatureC { get; set; }
public string? Summary { get; set; }
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
}
此控制器演示了一个典型的 Web API 端点。[ApiController] 属性启用了 API 特定行为。[Route] 属性定义了此控制器中所有操作的基础路由。
[HttpGet] 属性标记了响应 HTTP GET 请求的操作。该操作会自动以 JSON 格式返回一系列天气预报数据。
该示例展示了 AddControllers 如何通过最少的配置实现干净的 API 开发。控制器可以专注于业务逻辑,而框架则处理基础设施方面的问题。
来源
在本文中,我们探讨了 ASP.NET 8 中的 AddControllers 方法。此核心配置使我们能够以最小的设置构建健壮的 Web API。