我有一种情况,我想捕获 HTML 页面(不仅仅是 aspx 页面)触发的 404 错误,但我只能访问我网站根文件夹的 web.config 和所有子目录(注意,我没有可以访问实际的 IIS 服务器,但我无法创建应用程序或更改设置)
所以我确实在子目录上尝试了 web.config customerrors,它们确实有效,仅适用于 ASPX 页面,而不适用于 HTML 页面,有人知道为什么吗?
我有一种情况,我想捕获 HTML 页面(不仅仅是 aspx 页面)触发的 404 错误,但我只能访问我网站根文件夹的 web.config 和所有子目录(注意,我没有可以访问实际的 IIS 服务器,但我无法创建应用程序或更改设置)
所以我确实在子目录上尝试了 web.config customerrors,它们确实有效,仅适用于 ASPX 页面,而不适用于 HTML 页面,有人知道为什么吗?
请注意,上面的两个答案对于通常情况是正确的。但是,可以将 IIS 6.0 及更低版本配置为通过 ASP.NET 处理 HTML 页面或其他任何内容。此外,IIS 7 彻底改变了一切——实际上,ASP.NET 管道现在就是IIS 管道,因此任何内容都可以通过任何 HttpModules 进行处理。
因此,在 IIS 7 及更高版本中,您可以为 ASPX 页面配置的任何内容,都可以为 HTML 页面进行配置。
IIS 不解析 HTML 页面,因此不受 web.config 设置的影响。如果不配置 IIS 中的设置,我不知道有任何解决方法。
比 Jeremy 所说的更具体一点,IIS 将不同的文件扩展名映射到不同的可执行文件。默认情况下,它将被配置为让 .NET 运行时处理 .aspx 文件(在这种情况下,您的 web.config 将被加载和使用),但它将直接为 .html 页面提供服务(因此退回到它自己的 404错误处理)。
烦人,但我认为除了控制 IIS 或将平面 html 页面制作成 aspx 页面(即使它们不包含实际的服务器端内容)之外,你无能为力,以欺骗 IIS 让 .NET处理它们。
您可以查看 ASP.NET 的新路由功能:http://msdn.microsoft.com/en-us/library/cc668201.aspx。