存档
     

asp. net mvc 中的友好404错误

找不到自定义文件 (404) 错误页有助于为您的网站访问者创建更有价值的用户体验。链接变得过时, 没有什么比找到一个链接, 究竟是什么, 他们正在寻找, 并遇到臭名昭著的 “文件找不到” 屏幕更令人沮丧.

幸运的是, asp. net mvc 使实现对访问者更有意义的内容相对容易。使用通配符路由规则, 可以确保将所有完全格式错误的请求传输到特定控制器.

在上面的示例中, 任何与我们的任何其他路由规则不匹配的请求都将被转发到 Http404 上的操作 Error 控制器.

在这一点上, 有几件事值得指出.

一方面, 路由必须是最后映射的路由。这是因为小时 asp. net mvc 对路由进行了优先排序。它本质上是按照寻找匹配的声明的顺序进行的, 并在找到匹配的那一刻停止。由于我们的路由只包含通配符, 如果它是在任何其他路由规则之前列出的, 则这些其他规则永远不会被执行.
另一件值得指出的问题涉及类似的路由问题。例如, 我们的错误路由和每个 asp. net mvc 应用程序开始使用的默认路由.

虽然路由是按正确的顺序定义的, 但当用户请求以下 url 时, 可能会发生什么情况, 但您可能会感到惊讶:

  • http://example.com/foo

当框架遇到第二个路由规则时:

它看到, http://example.com/foo 比赛 . 在完全无知我们的其他路线的框架立即开始寻找一个控制器命名 foo.

因此, 要执行我们的错误路由, url 必须完全格式错误, 或者换句话说, url 不能匹配我们以前定义的任何路由。以下是将在我们的示例中执行错误路由的 url:

  • http://example.com/foo/a/b/c/d
  • http://example.com/something/somethingelse/hello/goodbye

虽然其应用有限, 但这种处理格式错误的 url 的技术非常有用。在我们的示例控制器中, 您可以访问请求的 url, 并可能分析该 url, 以提供建议, 帮助丢失的访问者找到他们要查找的内容。更进一步, 你可能要阅读我的文章 处理 ASP.NET MVC 中的未知控制器操作.

About Jason

Jason 是一位经验丰富的企业家和软件开发商, 在石油和能源行业有丰富的工作经验。精通领导力、移动开发、数据同步和 saas 架构。强大的工程专业, 阿肯色州立大学计算机科学学士学位。
View all posts by Jason →

发表评论

电子邮件地址不会被公开。 必填项已用*标注