【问题标题】:overwriting a web.config root file to enable customerrors tag覆盖 web.config 根文件以启用 customerrors 标签
【发布时间】:2009-04-21 23:48:52
【问题描述】:

我有一种情况,我想捕获 HTML 页面(不仅仅是 aspx 页面)引发的 404 错误,但我只能访问我网站根文件夹的 web.config 和所有子目录(注意,我无权访问实际的 IIS 服务器,我无法创建应用程序或更改设置)

所以我确实在子目录上尝试了 web.config customerrors,它们确实有效,仅适用于 ASPX 页面,而不适用于 HTML 页面,有人知道为什么吗?

【问题讨论】:

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


    【解决方案1】:

    请注意,上面的两个答案对于通常情况都是正确的。但是,可以将 IIS 6.0 及更低版本配置为通过 ASP.NET 处理 HTML 页面或其他任何内容。此外,IIS 7 彻底改变了一切——实际上,ASP.NET 管道现在的 IIS 管道,因此任何内容都可以通过任何 HttpModules 进行处理。

    因此,在 IIS 7 及更高版本中,您可以为 ASPX 页面配置的任何内容都可以为 HTML 页面配置。

    【讨论】:

      【解决方案2】:

      您可以查看 ASP.NET 的新路由功能:http://msdn.microsoft.com/en-us/library/cc668201.aspx

      【讨论】:

      • 是的,目前似乎没有比这更好的解决方案了,谢谢
      【解决方案3】:

      HTML 页面不被 IIS 解析,因此不受 web.config 设置的影响。如果不配置 IIS 中的设置,我不知道有任何解决方法。

      【讨论】:

        【解决方案4】:

        比 Jeremy 所说的更具体一点,IIS 将不同的文件扩展名映射到不同的可执行文件。默认情况下,它将被配置为让 .NET 运行时处理 .aspx 文件(在这种情况下,您的 web.config 将被加载和使用),但它将直接为 .html 页面提供服务(因此退回到它自己的 404错误处理)。

        烦人,但我认为除了控制 IIS 或将平面 html 页面制作成 aspx 页面(即使它们不包含实际的服务器端内容)之外,你无能为力,以欺骗 IIS让 .NET 处理它们。

        【讨论】:

        • 实际上页面不存在,这就是捕获 404 错误的重点:)
        • 好吧,为了迂腐,IIS 处理 .html 页面的 request 页面,当它不存在时为 404 服务,而 .NET 处理 request 对于 .aspx 页面,然后在找不到文件时执行您在 web.config 中配置的任何操作(假设 IIS 配置为不检查 .aspx 文件本身是否存在,默认情况下不会)。更好的? :)
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-20
        • 1970-01-01
        • 2010-12-31
        • 1970-01-01
        • 2012-08-07
        • 2010-09-30
        相关资源
        最近更新 更多