部署到本地IIS服务器时.NET Web API POST请求出现400错误
解决ASP.NET Core Web API部署到IIS后内部调用出现HTTP 400错误的问题
针对你遇到的部署到本地IIS后,API1调用API2出现HTTP 400错误的问题,整理几个常见的排查方向和解决方法:
核对请求地址与端口配置
部署到IIS后,API2的访问地址大概率和VS调试时不同(比如VS用https://localhost:5001,IIS可能配置成http://localhost:8080),务必确认API1中调用API2的代码里,用的是IIS实际配置的端口和地址,不要沿用调试环境的地址。同时检查URL有没有拼写错误,比如多余的斜杠、路径写错等。校验请求内容与头部
HTTP 400错误大多和请求格式不合法有关:- 确认请求头的
Content-Type是否正确,比如传递JSON时必须是application/json,不要写成text/plain或其他类型; - 检查请求体的JSON格式是否合法,比如有没有遗漏引号、逗号,VS调试时可能自动兼容一些不规范格式,但IIS部署后会严格校验;
- 如果API2需要认证信息(比如Bearer Token),确认API1调用时是否正确携带了认证头,调试环境的认证配置可能没有同步到IIS部署环境。
- 确认请求头的
检查IIS站点配置
- 确认API2的IIS站点绑定协议(HTTP/HTTPS)和API1调用时的协议一致,如果VS里用HTTPS调试,部署到IIS后要确保站点配置了有效的SSL证书,或者调整API1的调用协议和IIS绑定匹配;
- 检查应用程序池的.NET运行时版本,必须选择.NET 6,不要误选成.NET Framework或其他版本。
查看详细错误日志
400只是笼统错误,要找具体原因必须看日志:- 在API2的
appsettings.json中开启调试级别的日志:"Logging": { "LogLevel": { "Default": "Information", "Microsoft.AspNetCore": "Debug" } } - 也可以在IIS中启用失败请求跟踪,捕获请求的详细错误信息,定位具体是参数校验失败、请求体解析错误还是其他问题。
- 在API2的
确认跨域配置(如果涉及)
虽然是本地不同端口,但如果API2的CORS策略只允许VS调试的端口,部署后API1的IIS端口不在允许列表里,也可能引发异常(部分场景下会表现为400)。检查API2的CORS配置,确保包含API1的IIS访问地址。
内容的提问来源于stack exchange,提问作者Sapnandu
相关产品推荐
相关产品推荐

