为何Postman向本地MVC6应用发Post请求正常,部署到IIS10却失败?
IIS10部署后Post请求失败的排查方案
常见原因及解决步骤
检查IIS请求限制
- 打开IIS管理器,找到目标站点,进入「请求筛选」
- 确认POST方法未被禁用:右键点击「允许HTTP方法」,检查POST在允许列表内
- 调整请求大小限制:若请求体较大,进入「请求筛选」的「请求限制」标签,修改「最大允许内容长度」(单位为字节,例如设为10485760即10MB)
验证ASP.NET Core模块配置
- 确保服务器安装了对应版本的ASP.NET Core托管捆绑包,否则IIS无法正确处理ASP.NET Core请求
- 检查站点「处理程序映射」,确认存在
AspNetCoreModuleV2且请求路径映射正确
排查模型绑定问题
- 确认请求头
Content-Type设置正确:JSON格式请求必须设为application/json,[FromBody]依赖该头部解析模型 - 查看服务器日志(路径通常为
站点根目录\logs或Windows事件查看器的「应用程序日志」),获取模型绑定失败的具体错误,比如字段类型不匹配、必填项缺失
- 确认请求头
检查HTTPS与路由配置
- 若站点启用HTTPS,确保Postman请求使用https协议,避免混合内容报错
- 核对控制器路由属性,确认部署后的URL与本地一致,排除环境差异导致的路由前缀、路径变化
排查权限问题
- 确认站点应用池身份权限足够:若方法涉及文件读写、数据库操作,应用池账户需具备对应权限
- 检查服务器防火墙是否允许对应端口的POST请求
补充调试技巧
可在控制器方法开头添加日志记录,确认请求是否到达、模型是否绑定成功:
public async Task<IActionResult> ReceiveLicence([FromBody] MXLockit_LicencingModel licenceResponse) { // 写入日志到指定路径,部署后查看日志状态 System.IO.File.AppendAllText(@"C:\temp\requestlog.txt", $"请求到达时间:{DateTime.Now},模型是否为空:{licenceResponse == null}\r\n"); // 后续业务逻辑 }
内容的提问来源于stack exchange,提问作者Neal Rogers
相关产品推荐
相关产品推荐

