Question

I have a simple 'file download' generic handler which sets the response contenttype and headers before sending the file through the same response.

I also have Response.Cache.SetCacheability(HttpCacheability.server) set in the global.asax.

As I have noticed from various sources, Internet Explorer doesn't like this no-cache setting and gives an error when trying to download the file (requested site unavailable or cannot be found).

I thought maybe I could override this setting in the .ashx page, so I alter the response's cacheability setting to public. This did not solve the issue... removing the line from global.asax does solve the problem but obviously affects the whole site.

Is there a way of setting the cachability just for my generic handler?

Cheers :D

Was it helpful?

Solution

Can you just check whether the request is made to your generic handler and provide the appropriate cache settings depending on the result ? Something like this:

public void Application_OnPreRequestHandlerExecute(object sender, EventArgs e)
{
    if (!HttpContext.Current.Request.Url.AbsolutePath.EndsWith("MyHandler.asxh", StringComparison.InvariantCultureIgnoreCase))
    {
        HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.Server);
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top