2011-02-01 62 views
0

我有一个简单的'文件下载'通用处理程序,它在通过相同响应发送文件之前设置响应内容类型和标题。通过关闭缓存的.ashx文件下载文件时出现IE错误

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

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

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

有没有办法只为我的通用处理程序设置cachability?

干杯:d

回答

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

谢谢你,我只是想知道如果我可以重写此值在奇数场合,我要求一个特定的页面 - 因此避免了每个请求的URL检查。在附注中,我的SetCacheability代码最初是在application_BeginRequest中的 - 将您的示例放在OnPreRequestHandlerExecute中有什么好处?谢谢:) – 2011-02-01 16:39:10

相关问题