Asp.net 缓存关闭时,通过.ashx文件下载文件时出现IE错误

Asp.net 缓存关闭时,通过.ashx文件下载文件时出现IE错误,asp.net,internet-explorer,caching,generic-handler,Asp.net,Internet Explorer,Caching,Generic Handler,我有一个简单的“文件下载”通用处理程序,它在通过相同的响应发送文件之前设置响应内容类型和标题 我还在global.asax中设置了Response.Cache.SetCacheability(HttpCacheability.server) 正如我从各种来源注意到的,Internet Explorer不喜欢这种无缓存设置,并且在尝试下载文件时出现错误(请求的站点不可用或找不到) 我想也许我可以在.ashx页面中覆盖这个设置,所以我将响应的可缓存性设置改为public。这并没有解决问题。。。从gl

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

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

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

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

有没有办法只为我的泛型处理程序设置cachability


干杯:D

您能检查请求是否是向您的通用处理程序发出的,并根据结果提供适当的缓存设置吗?大概是这样的:

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

谢谢你,我只是想知道,在我请求一个特定页面的时候,我是否可以覆盖这个值,从而避免对每个请求进行URL检查。另一方面,我的SetCacheability代码最初在应用程序_BeginRequest中—将其放置在OnPreRequestHandlerExecute中对您的示例有好处吗?谢谢:)我想你把这张支票放在哪里并不重要(BeginRequest或PreRequestHandlerExecute)。这就是我在一个项目中所做的;-)