【问题标题】:Return HttpNot Found Does't redirect to custom error page返回 HttpNot Found 不重定向到自定义错误页面
【发布时间】:2017-02-25 23:28:41
【问题描述】:

我创建了一个 ASP MVC Web 应用程序。我为错误 404 表单添加了一个自定义错误页面。 Web 配置中的自定义错误部分如下所示:

<customErrors mode="On">
  <error statusCode="404" redirect="/errors/Error404" />
</customErrors>

我有一个返回 HttpNotFound 结果的控制器

return HttpNotFound();

问题在于它显示的是默认错误 404 页面,而不是我的自定义页面。

【问题讨论】:

  • /errors/Error404 是否正确解析?试试~/errors/Error404
  • 是的,它已正确解决,并且在正常的 404 错误下工作正常,所有问题都来自未找到返回
  • 您是否将其作为 ajax 调用的响应返回?
  • 你有没有试过如果你试图调用一个真正不存在的资源会发生什么?我的意思不是返回 HttpNotFound 的控制器,而是未实现的控制器。
  • 因为是控制器返回 HttpNotFound 可能没有被拦截和处理。浏览器收到状态码 404 作为控制器的结果,然后显示它自己的 404 错误默认页面

标签: asp.net .net asp.net-mvc


【解决方案1】:

正如我在上面的评论中提到的,因为控制器是返回 HttpNotFound 它没有被拦截和处理。浏览器收到状态码 404 作为控制器的结果,然后浏览器显示它自己的 404 错误默认页面

尝试在控制器操作中调用:throw new HttpException(404, "Not found") 而不是HttpNotFound

【讨论】:

  • 非常感谢,它工作得很好,但是如果有其他解决方案会更好,因为这实际上会引发异常,该异常将存储在我的异常日志中,这不是很有必要,但它可以以任何方式工作,谢谢:)
  • 在我的情况下,它不是 404 的浏览器默认页面。它实际上显示 IIS 404 错误页面。
猜你喜欢
  • 2017-10-27
  • 1970-01-01
  • 2014-07-23
  • 2022-10-12
  • 1970-01-01
  • 1970-01-01
  • 2015-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多