通过关闭缓存的.ashx文件下载文件的IE错误

时间:2011-02-01 12:19:07

标签: asp.net internet-explorer caching generic-handler

我有一个简单的'文件下载'通用处理程序,它在通过相同的响应发送文件之前设置响应内容类型和标题。

我还在global.asax中设置了Response.Cache.SetCacheability(HttpCacheability.server)。

正如我从各种来源注意到的那样,Internet Explorer不喜欢这种无缓存设置,并在尝试下载文件时出错(请求的网站不可用或无法找到)。

我想也许我可以在.ashx页面中覆盖此设置,因此我将响应的可缓存性设置更改为public。这没有解决问题...从global.asax删除行确实解决了问题但显然影响了整个站点。

有没有办法为我的通用处理程序设置可达性?

干杯:D

1 个答案:

答案 0 :(得分:0)

您是否可以检查请求是否针对您的通用处理程序,并根据结果提供相应的缓存设置?像这样:

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);
    }
}