【问题标题】:Why do only some pages work with custom http errors in asp.net?为什么在 asp.net 中只有一些页面可以处理自定义 http 错误?
【发布时间】:2011-09-06 18:04:51
【问题描述】:

我的网站有问题:

自定义错误对我不起作用。这应该将一般错误重定向到一个页面,并将 404 错误重定向到另一个页面。它可以在本地工作,但不能在托管环境中工作。

<customErrors defaultRedirect="GeneralError.aspx" mode="on">
    <error statusCode="404" redirect="404Error.aspx" />
</customErrors>

编辑:好的,我对错误进行了更多测试,它似乎适用于以下页面:

www.[域].com/doesntexist.aspx

但不是为了

www.[域].com/doesntexist

只有当我把 .aspx 放在那里时它才有效。

编辑:任何人都知道我怎样才能使它适用于两种情况?

【问题讨论】:

  • 我建议您将此作为两个单独的问题发布,因为它们可能是两个单独的答案。它们似乎彼此没有任何关系,只是它们都发生在你身上,这无关紧要。
  • 迈克,我知道它们无关紧要,但它们都是简单的问题,所以我把它们放在这里。
  • “对不存在的托管页面(即 pagenotfound.aspx)的请求是否被重定向到 404error.aspx?” 应该,这就是它在本地所做的。
  • @TheGateKeeper 请将它们分开;他们不属于一起。否则,您将如何选择接受的答案?用户“A”正确回答了第一个问题,用户“B”正确回答了第二个问题。哪个得到它?
  • @rsbarro 我不知道,它在远程服务器上。但我使用 asp.net 4

标签: .net asp.net iis web-config


【解决方案1】:

这与您的主机运行的 IIS 的配置和版本有关。在 7 之前的 IIS 版本中,或者如果您使用“经典管道”运行 IIS 7,则实际上有两个 http 请求通过的通道。一个通过 ASP.net 处理 .net 请求,另一个管道转到 IIS。 (即 ASPX 进入 asp.net,.jpg 进入 IIS)

在您的情况下,不存在的页面将转到 IIS,您指定的 asp.net congi 不适用。我敢打赌,如果您输入 www.[domain].com/doesntexist.jpg 它不会转到您的自定义页面,但如果您输入 www.[domain].com/doesntexist.aspx 它会。

Sp 有几种解决方案,如果你有 IIS,则基于什么版本。如果您的主机使用 IIS7,那么您可以使用 Integrated Pipeline 运行该站点,这意味着所有请求都通过 ASP.net 并且配置将适用。 Here is more info.

如果您没有运行 IIS,则只能通过 specifying the custom error codes in IIS itself 解决此问题。如果是这种情况,希望您的主机允许这样做。

IIS6 的另一种可能性是为非 .net 页面和文件创建自定义处理程序,并强制它们路由到 asp.net,然后应用您的配置。这是不可取的,因为它可能成为维护的噩梦和额外的代码/配置。

相关的 SO 问题:

IIS overriding custom 404 error page in ASP.NET

How to get Custom Error Pages working for Classic ASP with IIS 7 Integrated Pipeline

Site not redirecting to Default Document in Classic pipeline mode

【讨论】:

  • 奇怪.. 当我更改为集成管道模式时,该站点停止工作!明天我会进一步研究。
  • 我刚刚检查过,我的主机使用的是 IIS7。我做了更多的工作,让我的网站以集成管道模式运行。但由于某种原因,它仍然无法正常工作。我坚持集成管道模式使所有请求都通过 asp.net?那么为什么一个重定向和另一个发送一般错误?顺便说一句,我还没有学习 IIS,因为我只是一个初学者,我只知道一点 asp.net 和 css,所以我不知道这些东西:)
  • 很奇怪。一定有什么东西在覆盖它。看看stackoverflow.com/questions/3166523/…。可能需要配置或删除 web.config 中的 部分,或者如果您有默认错误处理程序,请尝试 Response.TrySkipIisCustomErrors。
  • 会尝试的,令人惊讶的是,这么小的事情怎么会这么麻烦。 IIS 是一头难以驯服的野兽
  • 让它与 httpErrors 一起工作,尽管它只工作,因为这是一个非常简单的网站。如果我有更多的功能,比如错误处理,这不是一个好的解决方案,因为不会记录异常。
【解决方案2】:

Mozilla Firefox sometimes has a caching issue with favicons。 尝试将浏览器直接导航到文件:http://example.com/favicon.ico。这会将其加载到 Firefox 的缓存中。关闭浏览器并重新加载您的托管网站。

检查您的托管服务提供商的 IIS 设置是否存在 404 错误。检查您的托管服务提供商常见问题解答以了解 IIS 设置和 404。他们可能不允许从 web.config 进行配置。

【讨论】:

  • 对我有什么表现?没有指示如何访问您的托管站点。
猜你喜欢
  • 2010-10-20
  • 2013-06-08
  • 1970-01-01
  • 2010-11-03
  • 1970-01-01
  • 2011-03-26
  • 2020-07-11
  • 2016-12-03
  • 1970-01-01
相关资源
最近更新 更多