我有一个以经典管道模式运行 .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 错误。
我尝试将runAllManagedModulesForAllRequests
Web.Config 中的选项设置为 true 但这似乎没有帮助:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"></modules>
</system.webServer>
据我了解,这应该会导致所有请求都通过 .NET 并因此触发 Application_BeginRequest 事件?
期望的结果:
我希望所有请求都通过 .NET,以便为 JPG 调用 Application_BeginRequest 事件,如果未找到图像,则返回默认图像。