.Net Core Web Apps 偶尔会停止正常工作,直到重新部署

.Net Core Web Apps occasionally stop working properly until re-deployed

这是我第二次看到这种行为,我不确定如何解决。

我有一个基于 .Net Core 的网络系统。目前是 2.0(我知道,我需要更新这个)。

这些应用构成了一个多租户报告系统。一个应用程序用于获取数据以进行报告。另一个是远程客户端系统用来上传和导入数据的端点,然后在前端可见。

一切都建立在构建服务器(Team city)上,构建工件也通过同一 Team City 服务器上的单独构建配置部署到 Azure。

这一段时间以来(一年多)总体上运行良好。然而,大约几个月前,其中一个 Web 应用程序(报告应用程序)开始不响应请求。并非所有请求(例如 'login' 等仅生成 JWT 令牌的基本请求都可以),但任何试图获取大量数据的请求都不会响应。

重新启动网络应用程序没有帮助。打开额外的日志记录没有帮助,但似乎可以指出它正在访问特定的代码行并且只是... 停止。这是非常奇怪的,而且不是一条线做任何特别费力的事情。

最后,我添加了更多日志记录,当然必须重新部署才能完成这些更改……然后问题就完全消失了。除了一些日志记录语句之外,我真的没有添加任何额外的东西(我对此非常细致并且通过团队 City/VCS 标签(Git)提供 build/deployment 历史记录)。

今天我在 other .Net Core Web 应用程序上遇到了类似的症状。它似乎只是到达代码中的特定位置然后 停止 。 (据我从日志中可以看出)。在尝试重新启动该应用程序(以及涵盖这两个应用程序的整个应用程序服务)但它没有任何效果后,我只是再次重新部署该站点 没有任何更改 并且它开始工作了。

什么可能导致这种行为?似乎有时 .Net Core Web 应用程序只是进入某种奇怪的状态并停止正确响应。他们不会抛出异常,只是... stop。重新启动 Web 应用程序似乎没有帮助,这特别奇怪。就好像它在重新启动之间保持的状态比您预期的要多。

我将尽快尝试优先升级到 .Net Core 2.2 或类似版本,但想知道是否有人看到过这个,当然,如果在更新后再次出现这种情况,我会很不高兴。

突然不工作的原因只能通过查看后端日志来跟踪,如果需要,可能会收集内存转储,这绝对可以增加很多价值。

但有时 Asp.Net 核心应用程序在平台基础架构更改后的一段时间内不可用。该问题与站点预加载功能和 IIS 管道中的 Asp.Net 核心模块之间的交互有关。

对于 Asp.Net 核心

,这被跟踪为 https://github.com/aspnet/AspNetCoreModulowine/issues/260

看看是否有帮助,请将以下内容 Applicationhost.xdt 放入 D:\Home\Site 文件夹。

<?xml version="1.0"?>
 
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <system.applicationHost>
    <sites>
    <site>
      <application xdt:Locator="Match(applicationPool)" xdt:Transform="SetAttributes(preloadEnabled)"
            applicationPool="wwwsilkroadcom" preloadEnabled="false"/>
    </site>
    </sites>
  </system.applicationHost>
</configuration>

我把这件事全忘了。

自问这个问题以来,我已将此服务升级到 .Net Core 2.2,然后升级到 .Net Core 3.1。

据我所知,自从我更新到 2.2 后,这些问题就没有再出现过,所以基本的答案是 .Net Core 2.0 中有 something 最终会中断一些原因。

所以说真的,这现在有点没有实际意义,因为 2.0 已经停产很久了,但以防万一有人遇到这种情况...硬着头皮升级它。

(2.0 到 2.2 很简单,2.2 到 3.1 更复杂但不是世界末日)