Asp.net 缓存关闭时,通过.ashx文件下载文件时出现IE错误
我有一个简单的“文件下载”通用处理程序,它在通过相同的响应发送文件之前设置响应内容类型和标题 我还在global.asax中设置了Response.Cache.SetCacheability(HttpCacheability.server) 正如我从各种来源注意到的,Internet Explorer不喜欢这种无缓存设置,并且在尝试下载文件时出现错误(请求的站点不可用或找不到) 我想也许我可以在.ashx页面中覆盖这个设置,所以我将响应的可缓存性设置改为public。这并没有解决问题。。。从global.asax中删除该行确实解决了问题,但显然会影响整个站点 有没有办法只为我的泛型处理程序设置cachabilityAsp.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
干杯: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)。这就是我在一个项目中所做的;-)