为什么只有一些页面在asp.net中使用自定义http错误?

时间:2011-09-06 18:04:51

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

我的网站出现问题:

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

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

编辑:好的我测试了错误的东西,它似乎适用于以下页面:

万维网。[域]的.com / doesntexist.aspx

但不适用于

万维网。[域]的.com / doesntexist

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

编辑:有人知道我怎么能这样做,所以它适用于两个实例?

2 个答案:

答案 0 :(得分:4)

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

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

Sp有几种解决方案,基于您拥有的IIS版本。如果您的主机使用IIS7,那么您可以使用Integrated Pipeline运行该站点,这意味着所有请求都将通过ASP.net并且将适用configuraiton。 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

答案 1 :(得分:-1)

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

检查您的托管服务提供商的IIS设置是否有404错误。检查您的托管服务提供商常见问题解答以了解IIS设置和404.他们可能禁止从web.config配置。