2014-09-06 200 views
3

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

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

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

  • 开放SITENAME.azurewebsites.net - >错误发生
  • 开放SITENAME.azurewebsites.net/Site1.aspx - >错误不存在的
  • 打开SITENAME.azurewebsites。净/ Site2.aspx - 不存在的
  • 刷新SITENAME.azurewebsites.net/Site2.aspx>错误 - >发生错误并不会消失,直到我再次打电话Site1.aspx

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

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

谢谢你的帮助!

编辑: 什么我忘了提:在某些线程关于这个错误我看,这3分钟类似的东西后发生。在我的情况下,直到错误信息显示出来的时间将近25秒。

回答

8

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

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

我会建议寻找远程调试,并找出这是越来越加载和为什么。

+0

感谢您的回答!我尝试了远程调试,但我没有得到太多,因为我启动后遇到了AccessViolationException :)。关于Windows.Forms.dll:是否有可能,System.Drawing.dll导致Windows.Forms加载? – metabolic 2014-09-06 19:41:09

+0

是的,你从System.Drawing中使用了什么? System.Drawing使用了很多被Azure Sandbox阻止的GDI +代码。一般来说,大多数UI代码将被阻塞,因为它取决于被阻止的内核调用。一般来说,你不应该在服务器代码中使用它。如果你只是使用System.Drawing的帮助函数,那么他们可能是其他选择 – ahmelsayed 2014-09-06 22:29:10

1

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

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

因此,我最终启用了启用了自动修复的临时插槽,并禁用了自动修复功能的生产插槽(当然,当时我还认为它在两个插槽上都被禁用了)。然后,我根据我交换的次数,随机地“在分段或生产中发生502错误”。奇怪的是,虽然应用程序似乎重新启动(或至少未能响应几个请求),但我没有在日志文件中看到相应的事件,就像在应用程序池回收触发后没有运行Application_Start由自动治疗系统。

花了我一整天的时间来了解发生了什么,我希望这个答案能够帮助处于相同情况的人。

+0

我发现一个错误报告给微软,请求没有路由到正确的Web服务器。他们应该在一个月内修复这封邮件。我相信这个bug在那里有一段时间。 – jsgoupil 2016-03-25 18:34:46

+0

嗨@jsgoupil,交换时同样的事情发生在我身上......你知道它是否已被纠正? – Subgurim 2016-05-13 14:02:38

+1

@Subgurim我相信这是固定的。我一直在交换没有任何问题。我还没有运行我的测试仪。 – jsgoupil 2016-06-01 17:07:21