Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 如何防止pdf缓存所有浏览器?_Asp.net Mvc 3_Pdf_Caching_Http Headers_Outputcache - Fatal编程技术网

Asp.net mvc 3 如何防止pdf缓存所有浏览器?

Asp.net mvc 3 如何防止pdf缓存所有浏览器?,asp.net-mvc-3,pdf,caching,http-headers,outputcache,Asp.net Mvc 3,Pdf,Caching,Http Headers,Outputcache,即使在所有浏览器的导航栏上填写了物理路径,它也会显示一个缓存文件 问题是(因为现在对我们来说这是一个大问题),我已经通过远程连接清除了客户端浏览器缓存,并且我也已经在服务器应用程序池上应用了回收,但我仍然面临着同样的老问题:/有人面临类似的问题吗 以下列表包括迄今为止尚未解决问题的操作: 01-响应标题: protected override void OnActionExecuting(ActionExecutingContext filterContext) { filterCont

即使在所有浏览器的导航栏上填写了物理路径,它也会显示一个缓存文件

问题是(因为现在对我们来说这是一个大问题),我已经通过远程连接清除了客户端浏览器缓存,并且我也已经在服务器应用程序池上应用了回收,但我仍然面临着同样的老问题:/有人面临类似的问题吗

以下列表包括迄今为止尚未解决问题的操作:

01-响应标题:

protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
    filterContext.RequestContext.HttpContext.Response.ClearHeaders();
    filterContext.RequestContext.HttpContext.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    filterContext.RequestContext.HttpContext.Response.Cache.AppendCacheExtension("no-store, must-revalidate");
    filterContext.RequestContext.HttpContext.Response.AppendHeader("Pragma", "no-cache");
    filterContext.RequestContext.HttpContext.Response.AppendHeader("Expires", "0");
    filterContext.RequestContext.HttpContext.Response.AppendHeader("Last-Modified", "Wed, 08 Jan 2014 15:39:15 GMT");
    filterContext.RequestContext.HttpContext.Response.AppendHeader("If-Modified-Since", "Tue, 07 Jan 2014 15:39:15 GMT");

    base.OnActionExecuting(filterContext);
}
02-数据注释:

[OutputCache(NoStore = true, Duration = 0, Location = OutputCacheLocation.None, VaryByParam = "none")]
public ActionResult Avaliacao(int id)
{...

}
03-时间戳:

var _contents = memStream.GetBuffer();
memStream.Close();
return File(_contents, "application/pdf",
"RelatorioMensal-" + participante.Numero.GetValueOrDefault().ToString("00000") + "-" +
lote.Id.ToString("0000") + "-" + DateTime.Now.Ticks.ToString() + ".pdf");
04-应用程序池回收

05-IIS上.pdf文件的缓存规则筛选器设置为防止所有缓存

06-输出缓存设置:启用缓存启用内核缓存未选中以进行测试

07-通过代码清除缓存:

OutputCacheAttribute.ChildActionCache = new MemoryCache("NewDefault");

注:我是一个MCSD-Web应用程序,但在我解决这个“简单”问题之前,不要告诉任何人。谢谢;)

最终由浏览器决定缓存哪些文件,如果缓存了,缓存多长时间。@mkl如果我没有看到客户端浏览器没有请求的缓存.pdf文件,并且不在我们的服务器文件夹中,我可以同意您的意见。这太奇怪了,快把我逼疯了…缓存的.pdf文件不是客户端浏览器请求的,也不在我们的服务器文件夹中-听起来缓存不是你的主要问题,而是向你的客户端注入错误的pdf文件。我不知道@mkl。。。但这就是我通过物理路径执行请求的原因,客户端浏览器向我显示了来自巴西同一地区/城市的另一个客户端的.pdf缓存。@mkl我想与您分享,我们的问题肯定已经解决了。现在,整个站点处于SSL连接下,所有.pdf文件都正确显示。正如你之前所说的,还有一件事是向我们的客户注入虚假的PDF。非常感谢。