【问题标题】:Application_BeginRequest not fired for JPG on production serverApplication_BeginRequest 未在生产服务器上为 JPG 触发
【发布时间】:2013-07-20 05:55:16
【问题描述】:

我有一个以经典管道模式运行 .NET 4.0 的 IIS 7.5 网站。

我创建了一个简单的默认图像设置,如果调用了图像但物理文件不存在,则使用Application_BeginRequest 事件中的以下代码将请求重定向到默认图像:

protected void Application_BeginRequest(object sender, EventArgs e)
{
    if (Request.PhysicalPath.EndsWith(".jpg") && File.Exists(Request.PhysicalPath) == false)
    {
        Context.RewritePath("~/images/nophoto.jpg");
    }
}

这在我的 VS2010 开发服务器上运行良好,但在生产环境中,不会为 JPG 请求调用 Application_BeginRequest 事件,我得到的只是标准 HTTP 错误 404.0 - Not Found 错误。

我尝试将 Web.Config 中的 runAllManagedModulesForAllRequests 选项设置为 true,但这似乎没有帮助:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>

据我了解,这应该会导致所有请求都通过 .NET 并因此触发 Application_BeginRequest 事件?

期望的结果:

我希望所有请求都通过 .NET,以便为 JPG 调用 Application_BeginRequest 事件,如果未找到图像则返回默认图像。

【问题讨论】:

    标签: c# .net iis


    【解决方案1】:

    经典模式不会发生这种情况,您需要切换到集成模式。

    This 文章可能会提供见解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 2014-10-30
      • 1970-01-01
      • 2015-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      相关资源
      最近更新 更多