Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NET 5自定义错误页未在Azure网站上呈现_Asp.net_Asp.net Mvc_Azure_Azure Web App Service_Asp.net Core - Fatal编程技术网

ASP.NET 5自定义错误页未在Azure网站上呈现

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

我有一个ASP.NET 5站点,我想在其中添加自定义错误页。我习惯于在web.config中添加条目(从ASP.NET 4天开始),但我想在ASP.NET 5中使用新方法。因此,我在Startup.cs类中有以下内容:

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)时,我只会显示正确的错误屏幕;有什么想法吗?另外,如果你把你的评论作为一个答案,我会投赞成票。