【问题标题】:Azure Website Error 502Azure 网站错误 502
【发布时间】:2014-09-06 14:34:13
【问题描述】:

我在 Azure 上有一个 ASP.NET Webforms 应用程序,但在某些站点上总是出现以下错误: 502 - Web 服务器在充当网关或代理服务器时收到无效响应。

我已经阅读了很多关于 Azure 上的 502 错误的主题,但我仍然不明白在我的特定情况下的问题是什么。

该错误仅发生在应用程序的某个站点上。我总是可以重现以下模式:

  • 打开 SITENAME.azurewebsites.net -> 出现错误
  • 打开 SITENAME.azurewebsites.net/Site1.aspx -> 未发生错误
  • 打开 SITENAME.azurewebsites.net/Site2.aspx -> 未发生错误
  • 刷新 SITENAME.azurewebsites.net/Site2.aspx -> 出现错误,直到我再次调用 Site1.aspx 才会消失

我在日志中发现的唯一内容是,应用程序加载 System.Windows.Forms.dll 并且存在 AccessViolationException。我完全不知道为什么要加载这个 dll,因为 Visual Studio 中的任何项目中都没有对它的引用,但那是另一个故事 :)。

但我不明白的是,错误 502 并不总是发生在站点 502 上。 也许有人可以给我一个提示可能是什么问题或我如何找到它......

感谢您的帮助!

编辑: 我忘了提及:在我读到的有关此错误的一些线程中,它发生在 3 分钟或类似的时间后。在我的情况下,几乎总是大约 25 秒后出现错误消息。

【问题讨论】:

    标签: c# asp.net azure-web-app-service


    【解决方案1】:

    这表明存在应用程序问题。您设置 502 的原因是因为工作进程正在崩溃,并且前端留下一个没有响应的请求并返回 502 来准确说明这一点。在您网站的 LogFiles 文件夹下查找 eventlog.xml。或者你可以试试remote debugging from VS to your website

    System.Windows.Forms.dll 包含很多 UI 代码,这些代码很可能无法在 Azure 网站沙盒中运行。加载它的原因可能是因为您正在使用程序集中的某些内容或使用该程序集中的某些内容。它不必在 Visual Studio 中列出即可加载,因为它是标准 .NET Framework 的一部分。

    我建议研究远程调试并找出加载的时间以及原因。

    【讨论】:

    • 感谢我们的回答!我尝试了远程调试,但没有走得太远,因为我在启动后立即遇到了 AccessViolationException :)。关于 Windows.Forms.dll:System.Drawing.dll 是否可能导致 Windows.Forms 加载?
    • 是的,您在 System.Drawing 中使用什么? System.Drawing 使用了大量被 Azure Sandbox 阻止的 GDI+ 代码。一般来说,大多数 UI 代码都会被阻塞,因为它依赖于被阻塞的内核调用。通常,您在服务器代码中不需要它。如果您只是使用 System.Drawing 中的辅助函数,那么它们可能是其他地方的替代方法
    【解决方案2】:

    在我的情况下,我收到 502 错误,因为该站点已由 azure 自动修复系统重新启动。原来几天前我用那个自动修复系统做了测试,但由于最后我禁用了它,我认为它不会导致我的 502 错误。

    在这里我发现更改自动修复设置的 azure 界面(mywebsite.scm.azurewebsites.net/Support -> 缓解)仅影响生产槽。但是,当您交换部署槽时,设置会被交换。显然没有办法直接更改暂存槽设置,您必须交换,更改设置,然后再次交换。

    所以,我最终让我的暂存槽启用了自动修复,而我的生产槽禁用了自动修复(当然当时我认为它在两个槽上都被禁用了)。然后,根据我交换它们的次数,我在暂存或生产中“随机”遇到 502 错误。奇怪的是,虽然应用程序似乎重新启动(或者至少无法响应一些请求),但我没有在我的日志文件中得到相应的事件,就像在应用程序池回收触发后它没有运行 Application_Start通过自动修复系统。

    花了我一整天的时间才知道发生了什么,我希望这个答案可以帮助遇到同样情况的人。

    【讨论】:

    • 我发现了一个向 Microsoft 报告的 SWAP 错误,其中请求未路由到正确的 Web 服务器。他们应该在写此消息的一个月内修复。我相信这个错误已经存在了一段时间。
    • 嗨@jsgoupil,我在交换时也发生了同样的事情......你知道它是否已经被纠正了吗?
    • @Subgurim 我相信这是固定的。我现在一直在换,没有任何问题。不过我还没有运行我的测试器。
    【解决方案3】:

    我在摆弄连接字符串后得到了一段时间的错误,离开并在一个小时内回来,问题消失了,网站又正常工作了。为您提供高度技术性的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 2019-05-25
      • 2021-11-29
      • 1970-01-01
      • 2011-08-23
      相关资源
      最近更新 更多