在 Azure Web 应用程序中显示 ASP.NET 5 个错误页面

Show ASP.NET 5 error page in Azure web app

将我们的 ASP.NET 5 Web 应用程序部署到 Azure Web 应用程序时出现 500 内部服务器错误。

如何获取此异常的详细信息和堆栈跟踪?

我做了以下但没有成功:

使用 DNX 测试版 6。

尝试在 Web.config 文件中将 customErrors 模式设置为关闭,如下所示:

<system.web>
  <customErrors mode="Off" />
</system.web>

根据 this post(感谢 Muhammad),我应该能够通过编辑服务器的 web.config(非常正确,Celt)在 Azure 上得到运行时错误。

不幸的是,这没有用 - 没有详细的异常。

我进行了一些挖掘,发现了这些 "DetailedError" 日志:

这是他们包含的内容:

D:\home\site\wwwroot\favicon.ico 处尝试解析 favicon.ico 时似乎出了点问题。

那个位置确实没有网站图标。我纠正了这个,但仍然是同样的问题。事实上,我从来没有过网站图标,这曾经很管用。

最后,我删除了Azure Portal中的整个Web App并重新发布... TADA,它再次工作。

当您从 运行 ASP.NET 5 的 Azure Web 应用程序获得 HTTP 500 并且无法获得详细的错误输出时,根据我的经验,这是出于以下两个原因之一:

  • 您的 Startup.cs 导致了问题
  • 无法加载运行时

为了处理第一类问题,您最好编写一个错误处理程序来在某处记录启动错误(我们为此使用 Raygun.io,您的需求和偏好应该决定您的解决方案)。

对于第二种,我想出的最好方法是通过网站的诊断功能——您可以访问 Windows 服务器事件日志,它会告诉您运行时是否出现问题.

我遇到了完全相同的问题 - 总是得到 500 并且从来没有看到最微小的日志或信息有什么问题。即使在注释掉 Startup.cs 中的所有内容并简单地访问静态文件后,我得到了 500 个(尽管令人惊讶的是有时静态文件 正确提供,它从发布更改为相同的发布应用程序)。

我想我的部署中某些文件已损坏,而 azure 未检测到它。或者可能服务器上遗留了一些文件导致运行时发生冲突 - 下次我认为更改发布配置文件以不在服务器上保留额外文件(默认情况下它们不会被删除)也是值得的。

我最终删除并重新创建了应用程序,这解决了问题。

如果这对某人有帮助,我发现如果您正在使用 ASP.NET RC1 并且您正在使用 Azure WebApps 并添加一个名为 Hosting:Environment 的 App 设置,其值为development 将显示服务器 500 错误的堆栈跟踪。

为此,Startup.cs 中的 Configure 方法需要在您使用开发环境时使用开发人员异常页面。例如:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) {
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
        app.UseDatabaseErrorPage();
    }

    // etc
}

如果您仍然像我一样使用旧版本的 DNX 堆栈(使用 beta5,这是 Visual Studio 2015 附带的),他们有一个没有真正记录的设置。我相信从那以后这已经改变了,但这是你必须放在 web.config:

中的内容
  <appSettings>
    <add key="ASPNET_DETAILED_ERRORS" value="true" />
  </appSettings>

您的 startup.cs 有一些运行时代码不适用于 Azure。通过移动 app.UseDeveloperExceptionPage(); 强制呈现对开发人员友好的异常页面;到 Configure(...) 的开头。将更新的代码发布到 Azure、重新加载主页和异常现在会有帮助。

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
     {
          app.UseDeveloperExceptionPage();
      ...
     }