mikedavies-dev
mikedavies-dev

Reputation: 3345

Application_BeginRequest not fired for JPG on production server

I have an IIS 7.5 website running .NET 4.0 in Classic pipeline mode.

I have created a simple default image setup where if an image is called but the physical file does not exist the request is redirected to a default image using the following code in the Application_BeginRequest event:

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

This works fine on my VS2010 dev server but when on a production environment the Application_BeginRequest event is not called for JPG requests and all I get is the standard HTTP Error 404.0 - Not Found error.

I have tried setting the runAllManagedModulesForAllRequests option in the Web.Config to true but this does not appear to help:

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

From my understanding this should cause all requests to go through .NET and therefore trigger the Application_BeginRequest event?

Desired Outcome:

I'd like all requests to go through .NET so that the Application_BeginRequest event is called for JPGs and a default image is returned if no image is found.

Upvotes: 5

Views: 1274

Answers (1)

Tamim Al Manaseer
Tamim Al Manaseer

Reputation: 3724

That won't happen with Classic mode, you need to switch to Integrated Mode.

This article might provide an insight.

Upvotes: 3

Related Questions