【问题标题】:Catch 404 exception from StaticFileModule in IIS7 integrated pipeline mode在 IIS7 集成管道模式下从 StaticFileModule 捕获 404 异常
【发布时间】:2010-10-28 21:59:44
【问题描述】:

有谁知道是否有一种好的编程方式(不使用 CustomError 设置)来捕获/处理来自 IIS7 上集成管道模式下的 StaticFileModule 的 404 错误?

【问题讨论】:

  • 为什么需要这样做?是出于性能原因吗?是否用于自定义路由目的?
  • 我需要一种方法来显示自定义 404 页面,而不是静态 html/aspx 文件,而是来自 CMS 框架的动态选择页面。
  • 您是在集成模式还是经典模式下运行?我假设经典模式,因为 IIS7 自定义错误页面在集成模式下可以很好地处理静态文件。如果是经典,您可以切换到集成模式还是您的应用程序在该模式下无法正常工作?
  • 正如问题所说:) 我已经处于集成模式,我需要在 web.config 中显示一个“动态”页面而不是定义的页面。这确实是一个老问题,我以其他方式解决了它,所以如果你现在不直接如何解决它,请随意放手:)
  • 您希望动态代码运行,但声明它必须由 StaticFileModule 处理。这就是让我们感到困惑的地方。 StaticFileModule 的全部意义在于成为一个简单的文件转储,而不是运行动态代码的东西。我认为您需要 StaticFileModule 的假设是错误的。摆脱这个要求,在集成模式下,使用内置的 ASP.NET web.config 客户错误解决方案将毫无问题。

标签: asp.net exception iis-7 http-status-code-404


【解决方案1】:

您是否尝试过覆盖 Global.asax.cs 中的 HttpApplication.Error 事件:

    protected void Application_Error (object sender, EventArgs e)
    {
        HttpException httpException = Context.Error as HttpException;
        if (httpException != null)
        {
            switch (httpException.GetHttpCode ())
            {
                case 404:
                    // do stuff here
                    //Server.ClearError ();
                    break;
            }
        }
    }

【讨论】:

  • 我认为@bang 正在寻找一种不在应用程序.Net 进程中运行的解决方案,而是作为在StaticFileModule 中运行时配置或调整它的一种方式。 (虽然为什么他想要这样做还不清楚。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
  • 2019-04-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
相关资源
最近更新 更多