本地运行Web API遇IIS 10.0 404.0错误,Post请求无响应求解
本地Web API POST请求404问题排查与解决
1. 确认请求路由匹配
- 检查API控制器的路由配置:确保控制器上的
[Route]属性和Action的[HttpPost]路由模板完全匹配。比如控制器标注[Route("api/[controller]")]、POST Action标注[HttpPost("add")]时,请求URL应为http://localhost:端口号/api/控制器名/add,避免路由段漏写或拼写错误。 - 核对路由参数:如果Action包含路由参数(如
[HttpPost("{id}")]),需确保请求URL中携带对应参数值,或给参数添加?标记为可选。
2. 校验请求方法与Content-Type
- Postman中务必选择POST请求方法,避免误选GET等其他方法。
- 发送JSON数据时,在
Headers中设置Content-Type为application/json;发送表单数据则对应设置为application/x-www-form-urlencoded或multipart/form-data,需与API Action接收的参数类型匹配。
3. 检查IIS Express配置
- 查看项目
launchSettings.json:确认applicationUrl中的HTTP/HTTPS端口正确,无端口冲突情况。 - 验证
web.config的请求方法允许规则:确保<system.webServer>下的<handlers>配置包含POST方法,示例如下:
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
4. 确认参数绑定设置
- 若Action接收复杂类型参数,需添加
[FromBody](ASP.NET Core)或对应绑定属性(ASP.NET Framework),否则参数绑定失败会导致请求无法匹配Action,返回404。示例代码:
[HttpPost] public IActionResult Submit([FromBody] OrderModel model) { // 业务逻辑 }
- 保证请求体JSON结构与模型类属性名称完全匹配(默认大小写敏感,可按需配置忽略大小写)。
5. 调试与日志分析
- 启动调试模式,在POST Action首行添加断点,判断请求是否能进入:未进入则说明路由匹配失败;进入后无响应则排查是否存在死循环、异步操作未加
await等问题。 - 查看IIS Express日志:日志路径一般为
%USERPROFILE%\Documents\IISExpress\Logs,日志中会记录请求的详细信息,可定位404的具体诱因。
6. 排查防火墙与代理干扰
- 暂时关闭本地防火墙,测试请求是否恢复正常,排除端口拦截问题。
- 若使用代理工具(如Charles、Fiddler),关闭代理后重试,避免代理篡改或拦截请求。
内容的提问来源于stack exchange,提问作者Shokh
相关产品推荐
相关产品推荐

