我有一个带有Angular 8前端的ASP.NEt Core 3.1应用程序。当将其托管在IIS上时,它运行良好,但是由于我将其移至Kestrel之上的Nginx之上的新Ubuntu 18服务器上,有时长时间运行的后台进程会停止工作(IHostedService)。然后,该应用将朝接受新请求的方向运行,因此仅后台进程被停止。
这些进程从客户端获取文件,并使用进程ID给出立即响应。客户端可以通过其ID查询流程状态。在IIS上,一切都已经运行了好几个月了,但是新配置必须具有一些限制,这些限制会杀死这些进程。我想有一些我不知道的kestrel或nginx选项,它会影响由HTTP请求启动的进程。
我可以尝试哪些选项,在哪里可以获取一些日志?
我已经尝试从.net core记录所有内容,但是即使是最冗长的日志在这里也没有用。 Nginx日志也不包含有关已停止进程的任何信息。
尽管该应用程序可以很好地运行在IIS上,但是我试图找到没有任何输出的catch块,并添加了对它们的日志记录,但仍然没有。 我可以添加到应用程序全局变量中来记录已处理或未处理的任何异常的任何内容吗?
我忘了说我在Windows和Linux上都使用了本地Microsoft SQL Server Express。 linux Sql Server的安装是由官方的ms docs完成的(也包括dotnet和nginx config)。该数据库是从Windows sql服务器备份还原的。连接字符串与multipleresultsets = true相同。我应该知道有什么区别吗?
对于将来到达这里的任何人:这是由Microsoft.Data.SqlClient中的错误引起的,所以我不得不将它(独立于EF Core 3.1.2)从nuget更新为较新的1.1.2版本。
当卡住时,我在SqlClient中有两个线程互相等待。启用仅启用我的代码后,VS调试器在我的linq查询之一处停止。唯一有趣的部分是它从不抛出任何异常,并且在SQL Server上也没有死锁事件。它只是在那里等待,所以所有日志都为空。