【问题标题】:asp.net not displaying a custom 404 page as configuredasp.net 未按配置显示自定义 404 页面
【发布时间】:2011-03-04 05:02:43
【问题描述】:

在我的网络配置中,我有:

<customErrors mode="On">
  <error statusCode="404" redirect="~/error/404.aspx" />
</customErrors>

http://localhost/meh

http://localhost/meh.aspx

http://localhost/error/404.aspx 所有 404 错误显示的自定义错误页面

如何设置我的 web.config 以将所有 404 发送到我的自定义错误?

谢谢

【问题讨论】:

  • 好问题。我没有意识到这是这样处理的。这看起来确实很奇怪,因为无论扩展名如何,404 都是 404。
  • 听起来你必须在 IIS 中配置它,因为任何非 .aspx 扩展名都将由 iis 而不是运行你的应用程序的 .net 应用程序池处理?
  • Jimmy:所以我必须将我的配置设置加倍,确切地说,所有的处理方式都一样吗?这对我来说似乎倒退了。我的理解是 web.config 是该站点的配置。当转到一个不存在的站点上的页面时,站点配置不应该启动并重定向到 404 页面吗?
  • 不,只有某些文件扩展名由 ASP.NET 框架处理。否则 IIS 会处理它。检查我的答案。
  • @justin the web.config if for .net based applications... IIS 也可以托管 ie。 php、perl、java 或任何不使用 web.config 的东西。这在最新版本的 web.config 中发生了变化,它现在包含一个 system.webServer 部分,但作为一个拇指规则,web.config 用于 .net 应用程序,而不是网络服务器本身。

标签: asp.net http-status-code-404


【解决方案1】:

您必须在 IIS 中进行配置。默认情况下,只有特定文件将通过 ASP.NET 框架进行路由……否则 IIS 将处理它。

【讨论】:

  • 只是为了好玩,如果我无法访问托管服务器上的 IIS 怎么办?我只想用 web.config 来配置我的网站,网站的配置 :)
  • 不确定您需要做什么。您要么必须请求更改 404 页面,要么请求所有请求通过 ASP.NET。不久前我遇到了同样的问题,因为我试图在 WebForms 中进行 URL 重写,但除非我编辑 IIS,否则它将无法工作。这个链接是我发现我的问题的地方。这是关于 URL 重写的,但它仍然适用:urlrewriter.net/index.php/support/installation/…
  • 感谢您的帮助,在此我不得不说,我认为我对微软的看法再糟糕不过了......确实如此。需要在 2 个地方配置相同的功能是愚蠢的
  • @Justing808:我同意……有点。这是处理请求的问题。他们要么通过 .net 处理引擎运行所有内容(这将产生不明显的副作用),要么他们必须让 IIS 引擎本身处理那些可能由应用程序更好地处理的引擎......(考虑重写 url)。这是一个陷阱 22。
  • 我同意。我认为它默认处理得当。非 .NET 页面无需通过 .NET 引擎运行并产生额外开销。
【解决方案2】:

使用 global.asax 文件中的 Application_Error 事件处理程序将用户重定向到 ~/error/meh.aspx

在 global.asax 中

 protected void Application_Error(object sender, EventArgs e)
 {
      Response.Redirect("~/error/404.aspx");

 }

在你的 web.config 中,也添加

  <customErrors mode="On" defaultRedirect="/error/404.aspx" />

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-28
  • 2018-08-05
  • 1970-01-01
  • 2019-09-14
  • 2016-08-18
  • 2010-11-24
相关资源
最近更新 更多