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

自托管Web API路由失效问题求助(ASP.NET Core 2.1)

解决ASP.NET Core 2.1自托管Web API 404问题

我一眼就揪出了问题的核心——你的项目SDK配置错了!咱们一步步来搞定:

问题根源

你的.csproj文件里用的是<Project Sdk="Microsoft.NET.Sdk">,这是针对普通控制台或类库项目的SDK,完全不包含ASP.NET Core Web应用所需的默认配置、控制器发现机制。这就是为什么你折腾了各种MVC路由配置却始终返回404,但自定义handler能正常工作——后者不需要依赖Web SDK的控制器扫描逻辑。

解决方案

修改你的.csproj,将SDK替换为Microsoft.NET.Sdk.Web,完整配置如下:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.1</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.App" Version="2.1.0" />
  </ItemGroup>
</Project>

验证步骤

  1. 保存修改后的.csproj文件
  2. 清理并重新构建项目(可以用命令 dotnet clean && dotnet build)
  3. 重启Web API服务
  4. 访问http://localhost:5000/api/values,此时应该能正常返回["value1","value2"]

补充说明

你之前尝试的UseMvcWithDefaultRoute()、手动配置路由、移除路由特性等操作本身没问题,但因为SDK不对,MVC框架根本没正确识别到你的ValuesController,所以这些配置都起不了作用。换成Web SDK后,ASP.NET Core会自动启用控制器发现逻辑,你的路由特性[Route("api/[controller]")]就能正常工作了。

内容的提问来源于stack exchange,提问作者Sergey Berezovskiy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:50:17