我正在尝试处理错误并为 404、403 等显示适当的页面。
为此,我制作了一个 ErrorHandling 过滤器,它按预期工作。即,当我尝试请求时
mysite.com/Home/random_non-existent_action
用户被重定向到我的自定义 404 页面并返回 404 作为响应代码。同样适用于 401 和 403。
我已经通过错误处理过滤器和在 web.config 上进行的修改实现了这一点:
这就是问题开始的地方,我们的客户也想自定义 IIS 的错误页面,例如当我请求时
mysite.com/images,
显示 IIS 错误页面是因为目录浏览被禁用,并且因为在 IIS 级别被阻止,所以我的错误处理过滤器不起作用。
为了覆盖 IIS 错误页面,我将以下代码添加到 web.config
现在,当我请求时,我的 web.config 中同时存在 customErrors 和 httpErrors
mysite.com/Home/random_non-existent_action
显示了我的自定义 404 页面(因为它被 IIS 绕过并且我的错误处理过滤器有效)。但是当我要求
mysite.com/content
或者
mysite.com/images
我收到带有 404 状态代码的空白响应。
当我将 responseMode 更改为 Redirect(而不是 ExecuteURL)时,它可以工作。但显然我正在尝试使用相对路径导航到我的自定义错误页面。
1-当我尝试覆盖 IIS 自定义错误页面时,为什么会得到空白响应?
2-为什么当我做出 responseMode="Redirect" 而不是 responseMode="ExecuteURL" 时它会起作用
任何帮助将不胜感激,因为我搜索了许多类似的 stackoverflow 主题但没有成功。
我已经尝试了现有响应和 responseMode 值的所有组合。除了 responseMode="Redirect" 之外的任何内容都会使其变为空白并带有相应的状态代码。
编辑 :
我最后所做的是,
使用 javascript 编写 html 内容并重定向到我的自定义错误页面。