如何解决Windows Server 2012托管的ASP.NET Core 3.1 Web API请求超时问题
ASP.NET Core 3.1部署到Windows Server 2012超时问题解决步骤
- 修正IIS层级的超时配置
你之前修改的Kestrel、aspNetCore模块超时仅作用于应用层,IIS默认的站点连接超时就是2分钟,需手动调整:- 打开IIS管理器,选中对应的站点,点击右侧「高级设置」
- 找到「连接限制」分组,将「连接超时(秒)」修改为600(对应10分钟)
- 再找到站点对应的应用程序池,打开高级设置,将「进程模型」下的「闲置超时(分钟)」调整为大于10的数值,避免进程被自动回收中断请求
- 匹配正确的运行时环境
你使用的是ASP.NET Core 3.1版本,安装5.0.9的Hosting Bundle存在兼容性风险,建议卸载现有版本,安装对应3.1最新的ASP.NET Core Hosting Bundle,安装完成后执行iisreset命令重启IIS生效 - 开启日志定位具体错误
将web.config中stdoutLogEnabled属性值改为true,在站点根目录手动创建logs文件夹,给IIS_IUSRS用户授予该文件夹的读写权限,重现超时问题后查看日志内容,排查是否存在数据库连接失败、依赖接口调用异常等业务层面的问题 - 本地环回测试排除网络问题
在服务器本地使用Postman或浏览器访问站点接口,如果本地访问正常,说明是防火墙限制问题,在Windows防火墙高级设置中添加入站规则,开放站点绑定的端口即可;如果本地访问也超时,说明是程序运行异常,检查部署包的配置文件(如连接字符串、权限配置)是否和本地测试环境一致 - 检查应用程序池配置
确认站点对应的应用程序池,.NET CLR版本设置为「无托管代码」,托管管道模式设置为集成模式,这是ASP.NET Core在IIS中托管的必填配置,配置错误会导致请求挂起超时
内容的提问来源于stack exchange,提问作者user2768586
相关产品推荐
相关产品推荐

