C# MVC 4를 사용하고 보고서 뷰어 aspx 페이지를 포함하여 SSRS에서 보고서를 렌더링했습니다. SQL Server 2008R2, Microsoft.ReportViewer.WebForms 버전 11.0을 사용하고 있습니다. 보고서 뷰어 및 세션 관련 문제
첫째 문제 내가 직면하고
,나는 사이트에 상대 값을 유지하기 위해 프로젝트 내에서 세션 변수를 사용하고 있습니다. SSRS와는 아무 관련이 없습니다 (예 : UserId). 의 Web.config에서
나는주가 : 제한 시간이 테스트 시나리오에 대한 터무니없이 높게 설정되어있다.
마찬가지로 SessionServerout 키가 60 인 ReportServer 데이터베이스에서 ConfigurationInfo를 업데이트했습니다 (다시 말하지만 테스트 할 가치가 있습니다).
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ReportViewer1.Reset();
string Reportpath = Request["ReportName"];
string ServerUserName = ConfigurationManager.AppSettings["ReportServerUser"];
string ServerPassword = ConfigurationManager.AppSettings["ReportServerPwd"];
string ReportServerDomain = ConfigurationManager.AppSettings["ReportServerDomain"];
string ReportsPath = ConfigurationManager.AppSettings["ReportsPath"];
ReportViewer1.ProcessingMode = ProcessingMode.Remote;
// Get report path from configuration file
ReportViewer1.ServerReport.ReportServerUrl = new Uri(ConfigurationManager.AppSettings["ReportServer"]);
ReportViewer1.ServerReport.ReportPath = String.Format(ReportsPath + "/" + Reportpath);
IReportServerCredentials irsc = new CustomReportCredentials(ServerUserName, ServerPassword, ReportServerDomain);
ReportViewer1.ServerReport.ReportServerCredentials = irsc;
ReportViewer1.ShowPrintButton = false;
#region Parameters for report
Microsoft.Reporting.WebForms.ReportParameter[] reportParameterCollection = new Microsoft.Reporting.WebForms.ReportParameter[1];
reportParameterCollection[0] = new Microsoft.Reporting.WebForms.ReportParameter();
reportParameterCollection[0].Name = "Example";
reportParameterCollection[0].Values.Add("Example");
ReportViewer1.ServerReport.SetParameters(reportParameterCollection);
#endregion Parameters for report
ReportViewer1.ServerReport.Refresh();
}
}
내가 로그인하면 내가
직면하고 문제, 내가 세션에서 설정 한 값이 : 열기 위해 다음과 같이내의 ReportViewer 코드입니다. 보고서를 열면 보고서가 1 초 안에 잘 실행되고 페이지에 표시됩니다.
배경 뒤에서 보고서 서버 임시 DB에 내 구성이있는 1 분 후 만료 날짜가있는 행이 삽입 된 것을 확인했습니다.
세션 키는 모두 괜찮이 시점에서 내
HttpContext.Current.Session.Keys
에 추가됩니다 그리고 심지어는 보고서 페이지를 닫습니다.
이 시점에서 나는 ReportServerTempDB에서 세션이 만료됨을 의미하는 1 분을 기다립니다.
그런 다음 작업에서 HttpContext.Current.Session을 값으로 사용하는 페이지로 이동합니다. 다시 말하지만,이 작업은 보고서와 아무 관련이 없습니다. 그것이 내가 대부분의 사람들이 장기 실행 보고서이 있었다 것 같다 나는이 인터넷 검색을 한 내 문제에 대한 작업 솔루션을 발견하지 않았습니다
Microsoft.Reporting.WebForms.ReportServerException: The report execution <key> has expired or cannot be found. (rsExecutionNotFound)
다음과 같은 오류를 얻을 키를 검색하려고하지만 경우 보고서 세션이 완료되기 전에 시간 초과되었습니다.
아이디어가 있으십니까?
추가 정보가 필요하면 질문을 업데이트하십시오.
미리 감사드립니다.
흠, ReportViewer.KeepSessionAlive 속성을 사용해 보셨습니까? –
@DTs -이 방법을 시도해 보았습니다.하지만 몇 가지 시도가있을 때 제대로하지 못했을 수 있습니다. – Kamal