Visual Studio 2017中Asp.Net Core 2 Web API运行IISExpress报HTTP 404错误
解决ASP.NET Core 2 Web API在IIS Express下的HTTP 404问题
针对你遇到的构建成功但运行时一直返回404的情况,结合你已经尝试的操作,我给你几个针对性的排查和解决方向:
1. 检查launchSettings.json配置
这个文件藏在项目的Properties文件夹下,是IIS Express启动的核心配置文件,重点确认:
applicationUrl是否设置了正确的端口和协议(比如http://localhost:5000或https://localhost:5001),确保端口没有被其他程序占用;- 如果是API项目,
launchUrl要指向有效的路由路径,比如你有ValuesController的话,应该设置为"launchUrl": "api/values",而不是默认的空或者根路径。
2. 确认路由配置是否正确
ASP.NET Core 2依赖路由匹配来定位控制器,你需要检查:
- 在
Startup.cs的Configure方法中,是否添加了app.UseMvc()(这是ASP.NET Core 2.x启用MVC路由的关键代码); - 控制器类上是否标注了正确的路由属性,比如
[Route("api/[controller]")],Action方法是否有[HttpGet]、[HttpPost]等HTTP动词属性; - 举个例子,如果你的控制器是
ValuesController,那么正确的访问地址应该是http://localhost:<你的端口>/api/values,直接访问根路径会因为没有匹配的路由返回404。
3. 清理IIS Express缓存和项目临时文件
IIS Express的缓存有时候会导致奇怪的启动问题,试试以下步骤:
- 完全关闭Visual Studio;
- 删除项目根目录下的
.vs隐藏文件夹(需要先在Windows资源管理器中开启“显示隐藏项目”); - 重新打开项目,依次执行清理解决方案(Build -> Clean Solution)和重新生成解决方案(Build -> Rebuild Solution),再启动项目。
4. 验证UseIISIntegration()的正确使用
你提到已经添加了这个方法,需要确认:
- 代码拼写正确(你写的
UseIISInte...要确保是完整的UseIISIntegration()); - 它在WebHost构建链中的位置正确,标准写法如下:
另外,ASP.NET Core 2.x的public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseIISIntegration() .UseStartup<Startup>() .Build();CreateDefaultBuilder已经默认包含了UseIISIntegration,不过显式添加也不会有问题,重点是确保没有语法错误。
5. 检查项目调试设置
在Visual Studio中右键项目 → 属性 → 调试标签页:
- 确认启动方式是IIS Express;
- 确保“应用URL”和
launchSettings.json中的配置一致; - 如果你的API不需要身份验证,勾选“启用匿名身份验证”,避免因权限问题导致的404。
6. 查看详细日志定位问题
你可以开启更详细的日志来排查请求处理过程:
- 在
appsettings.json中调整日志级别:{ "Logging": { "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } } } - 打开Visual Studio的输出窗口(视图 → 输出),选择“ASP.NET Core Web Server”作为输出源,查看请求的路径、路由匹配结果等信息,就能知道请求到底是没到达API,还是路由匹配失败了。
内容的提问来源于stack exchange,提问作者Sibeesh Venu
相关产品推荐
相关产品推荐

