生产服务器上没有为JPG激发Application_BeginRequest

本文关键字:激发 JPG Application BeginRequest 服务器 | 更新日期: 2023-09-27 18:24:10

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

我创建了一个简单的默认图像设置,如果调用了图像但物理文件不存在,则在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-未找到错误。

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

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

根据我的理解,这应该会导致所有请求都通过.NET,从而触发Application_BeginRequest事件?

预期结果:

我希望所有请求都通过.NET,这样就会为JPG调用Application_BeginRequest事件,如果找不到图像,就会返回默认图像。

生产服务器上没有为JPG激发Application_BeginRequest

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

这篇文章可能会提供一些见解。