0

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

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

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

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

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

干杯:D

4

1 回答 1

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);
    }
}
于 2011-02-01T15:27:20.167 回答