You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Visual Studio Code中创建WebAPI时为何看不到控制器?

解决VS Code中创建WebAPI后找不到控制器的问题

问题原因

.NET 6及以上版本的dotnet new webapi模板默认采用最小API模式,不会生成传统的控制器类,接口路由和业务逻辑直接写在Program.cs文件中。


解决方法

方法一:创建带控制器的WebAPI项目

执行命令时添加--use-controllers参数,指定生成包含控制器的模板:

dotnet new webapi -o WebAPI --use-controllers

执行该命令后,生成的项目会自动创建Controllers文件夹,并包含默认的WeatherForecastController.cs控制器文件。

方法二:手动给现有项目添加控制器

  1. 在项目根目录新建Controllers文件夹。
  2. 在该文件夹下创建控制器类,示例代码(以WeatherForecastController.cs为例):
using Microsoft.AspNetCore.Mvc;

namespace WebAPI.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 class WeatherForecast
{
    public DateOnly Date { get; set; }
    public int TemperatureC { get; set; }
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    public string? Summary { get; set; }
}
  1. 修改Program.cs,启用控制器路由支持:
var builder = WebApplication.CreateBuilder(args);

// 添加控制器服务
builder.Services.AddControllers();
// 保留Swagger相关配置(如果需要)
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

// 开发环境启用Swagger(可选)
if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

// 映射控制器路由
app.MapControllers();

app.Run();

内容的提问来源于stack exchange,提问作者taleen wahdan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 00:12:15