【问题标题】:.Net Core Web Apps occasionally stop working properly until re-deployed.Net Core Web 应用程序有时会停止正常工作,直到重新部署
【发布时间】:2022-04-11 22:32:22
【问题描述】:

这是我现在第二次看到这种行为,我不知道如何解决这个问题。

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

  • 单一应用服务
  • 两个基于 .Net Core 的 Web 应用程序:
    • 主要是 Web API REST 端点
    • 也有一些非常简单的 MVC 前端东西(一个后端管理门户,它使用 JS/JQuery 来查询一些 REST 端点以提供一些统计信息和诊断信息)
    • 一个网络应用有两个队列触发的网络作业
    • 两者都通过 EF Core 访问同一个 Azure SQL 数据库。
    • 两者都使用 NLog 进行日志记录
  • 第三个 Web 应用程序仅用于处理主 UI 的 Angular 前端,并且从不出现任何实际问题(调用 Web API 端点之一并显示结果数据.. 没有太多逻辑)

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

一切都构建在构建服务器(团队城市)上,构建工件也通过同一团队城市服务器上的单独构建配置部署到 azure。

现在(一年多)这通常运行良好。但是大约几个月前,其中一个 Web 应用程序(报告应用程序)开始不响应请求。并非所有请求(例如,仅生成 JWT 令牌的“登录”等基本内容都可以),但任何试图获取大量数据的请求都不会响应。

重新启动网络应用程序没有帮助。打开额外的日志并没有帮助,但似乎可以确定它正在到达特定的代码行并且只是......停止。这非常奇怪,而且不是一条特别费力的线路。

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

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

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

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

【问题讨论】:

    标签: azure asp.net-core-webapi azure-webapps


    【解决方案1】:

    我已经忘记了这一切。

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

    据我所知,自从我更新到 2.2 后,这些问题没有再次出现,所以基本的答案是 .Net Core 2.0 中有 something 最终由于某种原因而中断。 p>

    所以说真的,这现在有点争议,因为 2.0 距离 EOL 已经很久了,但以防万一有人遇到这种情况……硬着头皮升级它。

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

    【讨论】:

      【解决方案2】:

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

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

      这被跟踪为 https://github.com/aspnet/AspNetCoreModulowine/issues/260 for Asp.Net Core

      只是看看是否有帮助,将以下 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>

      【讨论】:

      • 谢谢你,我会试试的。但有一件事:应用程序并非不可用,而是某些操作似乎开始然后在代码中奇怪的随机(但一致)位置停止。一些操作(通常是我所知道的更简单的操作)仍然可以正常运行。另外,如果由于基础设施更改而导致临时中断,重新启动应用程序不会解决它吗?它看起来很奇怪,任何通过添加/更改任何代码进行故障排除的尝试都需要重新部署才能立即解决问题。令人沮丧....
      • 是的,这个链接 github.com/aspnet/AspNetCoreModule/issues/260 是正确的
      猜你喜欢
      • 2018-03-29
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2020-07-19
      • 2016-08-20
      • 2017-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多