Azure网站错误502

时间:2014-09-06 14:34:14

标签: c# asp.net azure-web-sites

我在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并不总是发生在Site 502上。 也许有人可以给我一个暗示可能是什么问题或者我怎么能找到它......

感谢您的帮助!

修改 我忘了提到:在一些关于这个错误的线索我读过,它发生在3分钟后或类似的事情。在我的情况下,它几乎总共大约25秒,直到错误消息出现。

3 个答案:

答案 0 :(得分:9)

这指出了应用程序问题。您正在考虑502的原因是因为工作进程崩溃并且前端留下没有响应的请求并且返回502以确切地说明。在您的网站的LogFiles文件夹下查找eventlog.xml。或者,您可以尝试remote debugging from VS to your website

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

我建议调查远程调试并弄清楚这是什么时候加载以及为什么。

答案 1 :(得分:3)

在我的情况下,我得到了502错误,因为该网站是由天蓝色自动修复系统重新启动的。事实证明我几天前使用该自动修复系统进行了测试,但由于最终我禁用了它,我认为它不会导致我的502错误。

这是我发现改变自动修复设置的天蓝色界面(mywebsite.scm.azurewebsites.net/Support - >缓解)仅影响生产槽的地方。但是当您交换部署插槽时,设置会被交换。显然无法直接更改暂存插槽设置,您必须交换,更改设置并再次交换。

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

花了我一整天才知道发生了什么,我希望这个答案可以帮助处于相同情况的人。

答案 2 :(得分:0)

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