当 url 包含 4 个或更多路径段时,MVC 3 中的 404 不会触发 Application_Error

发布于 2024-11-28 11:06:48 字数 301 浏览 1 评论 0原文

我正在尝试为 404 错误创建自定义错误页面。我已经在 Global.asax.cs 中实现了 Application_Error 方法。在大多数情况下,这非常有效,但对于具有 4 个或更多路径段的 URL,不会调用该方法。

我遇到问题的具体 URL 是:

http://localhost/Area/Controller/Action/ID

如果我删除 ID,我的自定义 404 年龄加载正常。问题似乎是我的路径中有 4 个级别 (/Area/Controller/Action/ID)。有什么想法吗?

I am trying to create a custom error page for 404 errors. I have implemented the Application_Error method in Global.asax.cs. For the most part this works great, but the method isn't getting called for URLs with 4 or more path segments.

The specific URL that I'm having trouble with is:

http://localhost/Area/Controller/Action/ID

If I remove the ID, my custom 404 age loads fine. The problem seems to be having 4 levels in my path (/Area/Controller/Action/ID). Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

葵雨 2024-12-05 11:06:48

我怀疑你的路由没有考虑到由 4 部分组成的 URL。尝试添加一条捕获所有路由作为最后一条路由来测试这一点:

routes.MapRoute("Error404", "{*url}", new {controller = "Error", action = "PageNotFound" } );

在 RouteConfig.cs 问题中包含(部分)路由也可能有所帮助。

I suspect your routes don't account for a URL with 4 parts. Try adding a catch all route as your last route to test this:

routes.MapRoute("Error404", "{*url}", new {controller = "Error", action = "PageNotFound" } );

Including (some of) your routes in your RouteConfig.cs question might also help.

狼性发作 2024-12-05 11:06:48

设置 IIS 的自定义错误页面:在 IIS 中右键单击您的网站/虚拟目录 -->属性-->自定义错误选项卡 -->将 404 错误设置为您的错误页面。

您的自定义错误只会在符合您的路由规则的情况下触发。一旦所有路由规则失败并且在该路径上找不到页面,它就会将错误传递给 IIS。然后,IIS 使用其 404 规则来处理未找到的对象,因此您必须覆盖该规则并将其指向您的项目中的自定义 404。

Set the custom error page for IIS: In IIS rightclick your website/virtual directory --> properties --> custom errors tab --> set the 404 error to your error page.

Your custom errors will only fire for things that fit your route rules. Once all of your route rules fail and it does not find a page at that path it passes the error up to IIS. IIS then uses its 404 rule for object not found so you have to override that and point it back into your project to your custom 404.

水晶透心 2024-12-05 11:06:48

您是否收到 IIS 错误页面?试试这个。

  1. 打开 IIS,选择您的网站,然后选择“错误页面”选项。
  2. 找到404状态代码,右键单击并转到“编辑功能设置”。
  3. 现在,选择“自定义错误页面”并将“路径类型”更改为 URL“执行 URL”
  4. 最后,将 URL 作为相对值输入,现在它应该在出现 404 错误时重定向到此 url。

Are you getting your IIS error page instead? Try this.

  1. Open IIS, select your website, and choose the option "Error Pages".
  2. Find the 404 status code, right click and go to "Edit Feature Settings".
  3. Now, select "Custom Error pages" and change the "Path Type" to URL "Execute URL"
  4. Finally, put in your URL as a relative value, and now it should redirect to this url on 404 errors.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文