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

如何在ASP.NET Core 7项目中同时构建MVC与Web API?

在ASP.NET Core 7中同一项目同时构建MVC和Web API的实现方案

一、创建基础项目

直接选择创建**ASP.NET Core Web App(MVC)**模板,这个模板默认包含MVC所需的视图、控制器和静态文件支持,后续只需扩展添加API功能即可。

二、配置Program.cs核心代码

ASP.NET Core 7采用顶级语句简化配置,只需确保同时启用MVC和API的服务与路由:

var builder = WebApplication.CreateBuilder(args);

// 同时添加MVC(含视图)和API控制器支持
builder.Services.AddControllersWithViews();
// 额外显式添加API控制器服务(可选,AddControllersWithViews已包含该功能,保险起见可添加)
builder.Services.AddControllers();

var app = builder.Build();

// 环境相关配置保持默认即可
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}

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

// 先配置API路由(推荐用属性路由,避免与MVC路由冲突)
app.MapControllers();
// 再配置MVC默认路由
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

app.Run();

三、创建API控制器

在项目的Controllers文件夹下新建API控制器,注意继承ControllerBase并使用属性路由标记:

[ApiController]
[Route("api/[controller]")]
public class WeatherForecastController : ControllerBase
{
    private static readonly string[] Summaries = new[]
    {
        "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
    };

    [HttpGet]
    public IEnumerable<WeatherForecast> Get()
    {
        return Enumerable.Range(1, 5).Select(index => new WeatherForecast
        {
            Date = DateTime.Now.AddDays(index),
            TemperatureC = Random.Shared.Next(-20, 55),
            Summary = Summaries[Random.Shared.Next(Summaries.Length)]
        }).ToArray();
    }
}

// 配套的实体类
public class WeatherForecast
{
    public DateTime Date { get; set; }
    public int TemperatureC { get; set; }
    public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
    public string? Summary { get; set; }
}

四、验证功能

启动项目后:

  • 访问 https://localhost:端口号/Home/Index,能正常显示MVC首页即说明MVC功能正常;
  • 访问 https://localhost:端口号/api/WeatherForecast,能返回JSON格式的天气数据即说明API功能正常。

常见问题说明

  • 路由冲突:API控制器务必使用[Route]属性路由,MVC控制器用默认路由,两者不会互相干扰;
  • 旧方案适配:ASP.NET Core 7移除了Startup.cs,所有配置都在Program.cs中完成,不要照搬旧版本的Startup配置方式;
  • 控制器基类:API控制器继承ControllerBase,MVC控制器继承Controller(含视图支持),不要混用。

内容的提问来源于stack exchange,提问作者Ha Thuan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 10:30:18