在 Azure Web 应用程序中显示 ASP.NET 5 个错误页面
Show ASP.NET 5 error page in Azure web app
将我们的 ASP.NET 5 Web 应用程序部署到 Azure Web 应用程序时出现 500 内部服务器错误。
如何获取此异常的详细信息和堆栈跟踪?
我做了以下但没有成功:
在启动时使用诊断错误页面:
app.UseErrorPage();
在 Azure 门户中设置 ASPNET_ENV
:
使用 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();
...
}
将我们的 ASP.NET 5 Web 应用程序部署到 Azure Web 应用程序时出现 500 内部服务器错误。
如何获取此异常的详细信息和堆栈跟踪?
我做了以下但没有成功:
在启动时使用诊断错误页面:
app.UseErrorPage();
在 Azure 门户中设置
ASPNET_ENV
:
使用 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();
...
}