2011-06-13 5 views
3

오늘 내 상사로부터 정말 즐거운 시간을 가졌습니다. 우리는 Microsoft.Reporting.WebForms.ReportViewer 구성 요소를 사용하는 ASP 웹 사이트를 가지고 있으며 모든 것이 멋집니다. 그러나 브라우저 (현재 IE9로 테스트 중)가 항상 캐시 된 페이지 (도구 -> 인터넷 옵션 -> 일반 탭 -> 검색 기록 -> 설정 -> 저장된 페이지의 새 버전 확인 -> 사용 안 함) 왜곡 된 이유로 브라우저는 항상 캐시 된 보고서를 사용합니다. 마이크로 소프트, 뭘 할 수있어?Reporting Services | 캐싱 중지

분명히하기 위해 보고서에는 사용자가 입력 한 매개 변수가 있으며 처음에는 올바르게 실행됩니다. 그런 다음 사용자가 매개 변수를 변경하고 보고서보기를 다시 클릭하면 화면이 깜박이고 새 보고서를 생성하는 것처럼 보이지만 동일한 보고서가 표시됩니다 (예 : 원래 매개 변수가 새 보고서가 아닌 보고서를 생성하는 데 다시 사용됨). 1). 매개 변수가 입력되는 텍스트 상자 (rdl의 일부)는 올바른 값을 유지하며, 보고서 자체는 보고서를 업데이트하지 않습니다.

나는 ReportViewer 컨트롤을 호스팅 페이지에 다음과 같은 자바 스크립트를 추가하려고했습니다

:

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

및 호스팅 페이지의를 Page_Load 함수에 다음 C# : 성공하지

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

. 누구든지 브라우저 기록 설정에도 불구하고 브라우저를 강제 업데이트하는 방법을 알고 있습니까?

+3

실제 질문은 올바른 질문에 '저장된 페이지의 최신 버전 확인 -> 사용 안함'입니다. – Earlz

답변

1

GET을 사용하여 보고서를 생성한다고 가정하면 URL을 고유하게 만드는 것뿐입니다. 나는 보통 이것을 사용하여 이것을 수행한다 DateTime.Now.Ticks

그래서 매개 변수를 변경할 때 추가 문자열을 쿼리 문자열에 추가하기 만하면된다 (이론적으로는 POST에서도 작동해야 함). 뭔가 같은 url+="&timestamp="+DateTime.Now.Ticks

+0

GET 또는 POST를 사용하고 있지 않습니다. 처음에는 보고서를 호출 할 때 보고서 뷰어 refresh() 메서드를 사용하지만 보고서보기 컨트롤 내에서 보고서보기 단추를 누르면 모든 코드를 통과하지 않습니다 ... – Patrick

+0

@Pat ah, 나는 그때 잘 모르겠다. – Earlz

3

쿼리에 "rs : ClearSession = true"를 추가하면 도움이되었습니다. 가져온 사람 here