簡體   English   中英

報告服務 | 停止緩存

[英]Reporting Services | Stop Caching

今天從我的老板那里得到了一個非常有趣的。 我們有一個使用 Microsoft.Reporting.WebForms.ReportViewer 組件的 asp 網站,一切都很可愛。 但是,如果瀏覽器(當前使用 IE9 進行測試)設置為始終使用緩存頁面(工具->Internet 選項->常規選項卡->瀏覽歷史記錄->設置->檢查存儲頁面的較新版本->從不),由於某種上帝遺棄的原因,瀏覽器總是使用緩存的報告。 微軟啊,你能用它們做什么。

需要明確的是,報告有一些由用戶輸入的參數,並且第一次運行正確。 如果用戶隨后更改參數並再次單擊查看報告,屏幕閃爍並執行所有操作以顯示好像正在生成新報告但顯示相同的報告(即再次使用原始參數生成報告而不是新的那些)。 輸入參數的文本框(rdl 的一部分)包含正確的值,只是報告本身不會更新它們。

我已嘗試將以下 javascript 添加到托管 reportviewer 控件的頁面中:

    <%
    Response.Cache.SetNoStore();
    Response.Expires = 0; 
    Response.CacheControl = "no-cache";
    %>

以及以下 c# 到托管頁面的 page_load function:

        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";

沒有成功。 盡管有瀏覽器歷史設置,有誰知道如何強制瀏覽器更新?

在查詢中添加“rs:ClearSession=true”對我有幫助。 取自這里

假設您使用 GET 生成報告,您所要做的就是使 URL 獨一無二。 我通常使用DateTime.Now.Ticks來做到這一點

因此,當您更改參數時,只需在查詢字符串中添加一個額外的參數(理論上,也應該與 POST 一起使用)。 url+="&timestamp="+DateTime.Now.Ticks

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM