ASP.NET 5自定义错误页未在Azure网站上呈现
我有一个ASP.NET 5站点,我想在其中添加自定义错误页。我习惯于在web.config中添加条目(从ASP.NET 4天开始),但我想在ASP.NET 5中使用新方法。因此,我在Startup.cs类中有以下内容:ASP.NET 5自定义错误页未在Azure网站上呈现,asp.net,asp.net-mvc,azure,azure-web-app-service,asp.net-core,Asp.net,Asp.net Mvc,Azure,Azure Web App Service,Asp.net Core,我有一个ASP.NET 5站点,我想在其中添加自定义错误页。我习惯于在web.config中添加条目(从ASP.NET 4天开始),但我想在ASP.NET 5中使用新方法。因此,我在Startup.cs类中有以下内容: if (env.IsEnvironment("Development")) { app.UseErrorPage(ErrorPageOptions.ShowAll); } else { app.UseStatusCodePagesWithReExecute("/H
if (env.IsEnvironment("Development"))
{
app.UseErrorPage(ErrorPageOptions.ShowAll);
}
else
{
app.UseStatusCodePagesWithReExecute("/Home/Error");
app.UseErrorHandler("/Home/Error");
}
当我使用kestral在本地运行时,我的错误页面会正确显示。然而,当我部署到Azure时,当我尝试测试404错误时,我会看到非常普通的白色错误页面:
您正在查找的资源已被删除、名称已更改或暂时不可用
我尝试在我的web.config中实现此答案,但它无法解决我的问题:
这是my web.config的相关部分:
<system.web>
<customErrors mode="Off" />
</system.web>
我还确保Azure网站的配置/应用程序设置部分中的ASPNET_ENV=“Production”
有什么想法吗?如果我能提供更多信息,请告诉我。IIS是一个棘手的问题,我们仍在ASP.NET 5中解决这个问题。当您在IIS上运行时,我们通过中间件管道运行,然后在没有任何东西处理请求的情况下回调IIS本机模块。当您得到任何中间件都无法处理的404时,它将重新进入IIS管道并触发特定于IIS的错误页面。UseStatusCodePagesWithreeExecute中间件仍在运行,但到那时,IIS已经将标题和正文发送到客户端(本例中为浏览器)。StatusCodePages中间件和404响应在IIS上的行为似乎有所不同。你可以看看这个问题,看看这个解决方法是否解决了你的问题:谢谢@KiranChalla,它似乎解决了这个问题。我确实有一个问题,为什么我在离开env.IsEnvironment(“Development”)块时会得到一个空白/空窗口。当我删除if语句和app.UserErrorPage(ErrorPageOptions.ShowAll)时,我只会显示正确的错误屏幕;有什么想法吗?另外,如果你把你的评论作为一个答案,我会投赞成票。