代码之家  ›  专栏  ›  技术社区  ›  s1mm0t

asp.net自定义错误应如何工作?

  •  1
  • s1mm0t  · 技术社区  · 15 年前

    this article http://www.mysite.com/some-non-existent-controller-and-action 我得到了404错误页面。然而,看看firebug发生了什么,我看到我得到了一个302-Found响应,这个不存在的页面,然后重定向到我的自定义错误页面,然后返回404(并显示自定义错误页面)。是这样吗?我不认为302是第一次返回是非常好的,特别是从搜索引擎优化的角度来看,也许我需要再次思考我是如何实现这一点。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Community CDub    8 年前

    处理404的最佳指南(我认为)可以在 this answer . 基本上,404有多种发生方式:

    1. 不存在路由-与catch all规则匹配。
    2. {controller}/{action}/{parameter} 规则。
    3. HandleUnknownAction 覆盖。
    4. 找到路由和操作,但无法转换参数-与catch all规则匹配。

    链接的答案基本上建立了一个控制器,可以从代码中的任何一点执行,而无需重写URL—这就是您想要的。

    此外,您还应该考虑处理未处理的异常和错误的url(例如包含尖括号等不安全字符的url)。我知道你的特殊情况 不得不 重写URL,否则根本无法呈现响应。这些特殊的请求有点棘手,我在博客上写过 here .

        2
  •  0
  •   Dean Harding    15 年前

    routes.MapRoute("Catch All", "{*path}",
        new { controller = "Error", action = "NotFound" });
    

    如果您将此作为最后添加的路由,则任何“未知”URL都将直接映射到 ErrorController 您可以直接从那里返回“notfound”视图,不需要重定向。