繁体   English   中英

在 asp .net core 3 中设置请求超时

[英]Set the request timeout with In-process hosting in asp .net core 3

我有一个 asp .net 核心网站,在 web.config 中有以下内容

<aspNetCore processPath="%LAUNCHER_PATH%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="inprocess" arguments="%LAUNCHER_ARGS%" requestTimeout="00:20:00">

但是它超时并出现错误

HTTP Error 500.37 - ANCM Failed to Start Within Startup Time Limit

我可以从https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-3.0看到 requestTimeout 属性不适用于 in-进程托管。 有没有增加超时的替代方法?

另一种前进的方法是重新调整应用程序,以便在第一次点击时加载不需要很长时间,但现在我试图避免这种情况。

我遇到了同样的问题,在花了一些时间寻找根本原因和可能的解决方案之后,我了解到当同一台机器上有许多应用程序池时会发生这种情况,这就是我的情况。

微软建议错开多个应用的启动过程 另一种解决方案是增加启动限制

我见过有人谈论将 hostProcess 从Inbound更改为Outbound ,这可能有效,但不会使用 IS HTTP 服务器,但使用Kestrel web 服务器来处理请求。

我认为最好的解决方案是错开启动过程或者增加启动限制。

在这里您可以找到更多信息: https://docs.microsoft.com/en-us/aspnet/core/test/troubleshoot-azure-iis?view=aspnetcore-3.0

https://tutorialshelper.com/what-is-the-difference-between-inprocess-and-outofprocess-service-in-asp-net-core/

我已经看到在 IIS 托管的 .NET Core 3.1 Web ZDB974238714CA38DE634A7CE1D08 应用程序中发生了同样的错误。

对我来说始终有效的一项建议是为应用程序回收 IIS 应用程序池。

如果您在 IIS 的生产环境中托管应用程序,我建议您定期安排应用程序池的回收,因为这可以释放 w3wp.exe 工作进程使用的 memory。

如果上述解决方法不能解决问题,另一个建议是在启动 ConfigureServices() 和 Configure() 方法期间调试应用程序,看看还有什么可能会延迟启动。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM