【发布时间】:2011-06-13 16:51:37
【问题描述】:
今天从我的老板那里得到了一个非常有趣的东西。我们有一个使用 Microsoft.Reporting.WebForms.ReportViewer 组件的 asp 网站,一切都很可爱。但是,如果浏览器(当前使用 IE9 进行测试)设置为始终使用缓存页面(工具->Internet 选项->常规选项卡->浏览历史记录->设置->检查存储页面的较新版本->从不),由于某种上帝遗弃的原因,浏览器总是使用缓存的报告。微软啊,你能用它们做什么。
需要明确的是,报告有一些由用户输入的参数,并且第一次运行正确。如果用户随后更改参数并再次单击查看报告,则屏幕闪烁并执行所有操作以显示好像正在生成新报告但显示相同的报告(即再次使用原始参数而不是新的参数来生成报告那些)。输入参数的文本框(rdl 的一部分)包含正确的值,只是报告本身不会更新它们。
我已尝试将以下 javascript 添加到托管 reportviewer 控件的页面:
<%
Response.Cache.SetNoStore();
Response.Expires = 0;
Response.CacheControl = "no-cache";
%>
和下面的c#到宿主页面的page_load函数:
this.Response.Cache.SetNoStore();
this.Response.Expires = 0;
this.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
this.Response.AddHeader("pragma", "no-cache");
this.Response.AddHeader("cache-control", "private");
this.Response.CacheControl = "no-cache";
没有成功。尽管有浏览器历史设置,有谁知道如何强制浏览器更新?
【问题讨论】:
-
真正的问题是,谁会使用
Check for newer versions of stored pages->Never
标签: c# asp.net reporting-services cache-control