加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:41:25 所属栏目:asp.Net 来源:网络整理
导读:我有一个ASP.NET 5网站,我想添加自定义错误页面.我习惯在web.config中添加条目(从ASP.NET 4天开始),但我想在ASP.NET 5中使用新方法.所以我的Startup.cs类中有以下内容: if (env.IsEnvironment("Development")){ app.UseErrorPage(ErrorPageOptions.ShowAll)
我有一个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中实现此答案,但它无法解决我的问题:

https://stackoverflow.com/a/29539669/8320

这是我的web.config的相关部分:

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

我还确保Azure网站的配置/应用程序设置部分中的ASPNET_ENV =“生产”.

有任何想法吗?如果我能提供更多信息,请告诉我.

解决方法

IIS是一个棘手的野兽,我们仍然在ASP.NET 5中解决这个问题.当您在IIS上运行时,我们会运行中间件管道,然后在没有处理请求的情况下回调到IIS本机模块.当您获得未被任何中间件处理的404时,它将重新进入IIS管道并触发IIS特定的错误页面. UseStatusCodePagesWithReExecute中间件仍在运行,但到那时,IIS已经将标头和正文发送到客户端(在本例中为浏览器).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读