覆盖 web.config 根文件以启用 customerrors 标记
我有一种情况,我想捕获 HTML 页面(不仅仅是 aspx 页面)引发的 404 错误,但我只能访问网站根文件夹的 web.config 以及所有子目录(注意,我不能可以访问实际的 IIS 服务器
,并且我无法创建应用程序或更改设置)所以我确实在子目录上尝试了 web.config 自定义错误,它们确实有效,仅适用于 ASPX 页面,不适用于 HTML 页面,有人知道为什么吗?
I have a situation where I want to catch 404 errors fired by HTML pages (not just aspx pages) but I only have access to the web.config of the root folder of my website, and all sub directories (note, i don't have access to the actual IIS server and I cannot create applications or change settings)
So I did try the web.config customerrors on a subdirectory, and they do work, for ASPX pages only, not HTML pages, does anyone know why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
请注意,上面的两个答案对于通常情况是正确的。 但是,IIS 6.0 及更低版本可以配置为通过 ASP.NET 处理 HTML 页面或其他任何内容。 此外,IIS 7 也从根本上改变了一切 - 实际上,ASP.NET 管道现在就是 IIS 管道,因此任何内容都可以通过任何 HttpModule 进行处理。
因此,在 IIS 7 及更高版本中,您可以为 ASPX 页面配置的任何内容,也可以为 HTML 页面进行配置。
Note that the two answers above are correct for the usual case. However, IIS 6.0 and below can be configured to process HTML pages or anything else through ASP.NET. Also, IIS 7 has changed things radically - in effect, the ASP.NET pipeline is the IIS pipeline now, so that any piece of content is processed through any HttpModules.
Thus, in IIS 7 and above, anything you can configure for ASPX pages, you can configure for HTML pages.
您可以查看 ASP.NET 的新路由功能:http://msdn.microsoft.com/en-us/library/cc668201 .aspx。
You could have a look at the new routing capabilities for ASP.NET: http://msdn.microsoft.com/en-us/library/cc668201.aspx.
HTML 页面不被 IIS 解析,因此不受 web.config 设置的影响。 如果不配置 IIS 中的设置,我不知道有任何解决此问题的方法。
HTML pages are not parsed by IIS therefore are not affected by web.config settings. I am not aware of any way around this without configuring the settings in IIS.
比 Jeremy 所说的更具体一点,IIS 将不同的文件扩展名映射到不同的可执行文件。 默认情况下,它将被配置为让 .NET 运行时处理 .aspx 文件(在这种情况下,您的 web.config 将被加载和使用),但它将直接为 .html 页面提供服务(因此依赖于它的自己的 404 错误处理)。
烦人,但我认为除了控制 IIS 或将平面 html 页面转换为 aspx 页面(即使它们不包含实际的服务器端内容)之外,您没有什么可以做的,以欺骗 IIS 让 .NET处理他们。
To be a bit more specific than what Jeremy said, IIS maps different file extensions to different executables. By default it will be configured to let the .NET runtime handle .aspx files (in which case your web.config will be loaded & used), but it will serve the .html pages directly itself (& therefore fall back on its own 404 error handling).
Annoying, but I don't think there's much you can do beyond either having control of IIS, or by making your flat html pages into aspx pages (even though they contain no actual server-side content), to trick IIS into letting .NET handle them.