[英]Azure Website Error 502
我在 Azure 上有一个 ASP.NET Webforms 应用程序,但在某些站点上总是出现以下错误: 502 - Web 服务器在充当网关或代理服务器时收到无效响应。
我已经阅读了很多关于 Azure 上 502 错误的主题,但我仍然不明白我的特定情况下的问题是什么。
该错误仅发生在应用程序的某些站点上。 我总是可以重现以下模式:
我在日志中发现的唯一一件事是,应用程序加载 System.Windows.Forms.dll 并且存在 AccessViolationException。 我完全不知道为什么要加载这个 dll,因为 Visual Studio 中的任何项目中都没有对它的引用,但那是另一回事了:)。
但我不明白的是,错误 502 并不总是发生在站点 502 上。也许有人可以给我一个提示,可能是什么问题或我如何找到它...
谢谢你的帮助!
编辑:我忘记提及的内容:在我读到的有关此错误的一些线程中,它发生在 3 分钟或类似的事情之后。 在我的情况下,在错误消息出现之前几乎总是大约 25 秒。
这指向一个应用程序问题。 你设置 502 的原因是因为工作进程崩溃了,前端留下一个没有响应的请求,并返回一个 502 来说明这一点。 在您网站的 LogFiles 文件夹下查找eventlog.xml
。 或者,您可以尝试从 VS 远程调试到您的网站。
System.Windows.Forms.dll
包含很多 UI 代码,这些代码很可能无法在 Azure 网站沙箱中运行。 加载它的原因可能是因为您正在使用程序集中的某些内容或使用该程序集中的某些内容。 它不必在 Visual Studio 中列出才能加载,因为它是标准 .NET Framework 的一部分。
我建议研究远程调试并弄清楚这是在什么时候加载的以及为什么。
就我而言,我收到 502 错误,因为该站点已被 azure 自动修复系统重新启动。 事实证明,几天前我使用该自动修复系统进行了测试,但由于最后我禁用了它,我认为它不会导致我的 502 错误。
这是我发现更改自动修复设置的 azure 界面(mywebsite.scm.azurewebsites.net/Support ->缓解)仅影响生产槽的地方。 但是当您交换部署槽时,设置会被交换。 显然没有办法直接更改暂存槽设置,您必须交换、更改设置并再次交换。
所以,我最终让我的临时插槽启用了自动修复,而我的生产插槽禁用了自动修复(当然当时我认为它在两个插槽上都被禁用)。 然后我在登台或生产中“随机”遇到 502 个错误,这取决于我交换它们的次数。 奇怪的是,虽然应用程序似乎重新启动(或至少无法响应一些请求),但我没有在我的日志文件中获得相应的事件,就像在应用程序池回收触发后它没有运行 Application_Start通过自动修复系统。
我花了一整天的时间才知道发生了什么,我希望这个答案可以帮助处于相同情况的人。
在摆弄连接字符串后,我得到了一段时间的错误,离开并在一个小时后回来,问题消失了,站点再次正常工作。 为您提供高度技术性的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.