Hi,
I'm implemented a ReportViewer HTML5 on my page, but some clients the report trigger a error.
1.
Unable to get report parameters.
2.
Client with ID -
'XXXXXX-XXXX' not found. Expired
3.
4.
and
5.
6.
Error
creating report instance (Report = <Proyect>.<ReportName>, <Proyect>, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null).
7.
Client with ID
'XXXXXX-XXXX' not found. Expired.
I found this post with same error but the user not post a solution: Getting Error Client with ID - 'XXXXXX-XXXX' not found. Expired
I appreciate your prompt help
PD: I can't upload Screenshots for security restrictions on my work
Best regards
7 Answers, 1 is accepted
Check if the TypeReportSource. property was configured correctly for the viewer.
Also, check the Reporting REST service settings - the configuration of the ReportsControlerBase.
Verify that each application that has a Reporting REST service has a unique HostAppId. Also, if you are using the default FileStorage option, each IIS process (application) must have access to the cache folder. In of web farms, load balancing you need to switch to the MsSqlServerStorage or RedisStorage option - REST Service Storage.
If the error is caused due to expired ClientSessionTimeout, test using a greater value, but do not set it to infinity as the viewer's records will never be deleted from the cache storage which will affect the general performance. Note that the ClientSessionTimeout expires only if there is no interaction with the viewer for the set time, where each interaction extends the time. When the time expires, the page must be refreshed. There are workarounds like refreshing the viewer on a given interval or refreshing the whole page.
If the issue persists, please open a support ticket and attach SAZ file generated by Fiddler while testing the application. This will allow us to check responses and error messages.
Regards,
Katia
Telerik by Progress
Hi Katia,
i'm so confused, the problem appears in only some clients (users)
this is my reportViewer string:
1.
<
telerik:ReportViewer
ID
=
"rptviewerHC"
runat
=
"server"
width
=
"9in"
Height
=
"11.5in"
2.
ScaleMode
=
"FitPageWidth"
ParametersAreaVisible
=
"False"
ViewMode
=
"PrintPreview"
3.
ServiceUrl
=
"~/api/reports/"
4.
TemplateUrl
=
"~/Resources/Html5/ReportViewer/templates/telerikReportViewerTemplate.html"
5.
DocumentMapVisible
=
"False"
EnableTheming
=
"False"
EnableViewState
=
"False"
>
6.
</
telerik:ReportViewer
>
and my codebehid:
1.
reportSource.Identifier =
GetType
(rptName).AssemblyQualifiedName
2.
reportSource.Parameters.Add(
"param1"
, value)
3.
reportSource.Parameters.Add(
"param2"
, value2)
4.
.
5.
.
6.
.
7.
reportSource.Parameters.Add(
"paramN"
, valueN)
8.
Me
.rptviewerHC.ReportSource = reportSource
this my controller class:
01.
Imports
Telerik.Reporting.Cache.Interfaces
02.
Imports
Telerik.Reporting.Services.Engine
03.
Imports
Telerik.Reporting.Services.WebApi
04.
Imports
System.IO
05.
06.
'The class name determines the service URL.
07.
'ReportsController class name defines /api/report/ service URL.
08.
Public
Class
ReportsController
09.
Inherits
ReportsControllerBase
10.
11.
Shared
configurationInstance
As
Telerik.Reporting.Services.ReportServiceConfiguration
12.
13.
Shared
Sub
New
()
14.
'This is the folder that contains the trdx or trdp report definitions
15.
'In this case this is the Reports folder
16.
Dim
appPath = HttpContext.Current.Server.MapPath(
"~/"
)
17.
Dim
reportsPath = Path.Combine(appPath,
"Reports"
)
18.
19.
'Add resolver for trdx report definitions,
20.
'then add resolver for class report definitions as fallback resolver;
21.
'finally create the resolver and use it in the ReportServiceConfiguration instance.
22.
Dim
resolver =
New
ReportFileResolver(reportsPath) _
23.
.AddFallbackResolver(
New
ReportTypeResolver())
24.
25.
'Setup the ReportServiceConfiguration
26.
Dim
reportServiceConfiguration
As
New
Telerik.Reporting.Services.ReportServiceConfiguration()
27.
reportServiceConfiguration.HostAppId =
"Html5DemoApp"
28.
reportServiceConfiguration.ReportResolver = resolver
29.
reportServiceConfiguration.Storage =
New
Telerik.Reporting.Cache.File.FileStorage()
30.
' reportServiceConfiguration.ReportSharingTimeout = 0
31.
' reportServiceConfiguration.ClientSessionTimeout = 15
32.
configurationInstance = reportServiceConfiguration
33.
End
Sub
34.
35.
Public
Sub
New
()
36.
'Initialize the service configuration
37.
Me
.ReportServiceConfiguration = configurationInstance
38.
End
Sub
39.
End
Class
I need to set this parameters to keep alive the session ?
1.
' reportServiceConfiguration.ReportSharingTimeout = 0
2.
' reportServiceConfiguration.ClientSessionTimeout = 15
Why the error occurs when the window is opened for the first time in some cases?
Regards,
JosueIt seems like the client(viewer) cannot be found in the cache records as it has expired. Thus, test extending the ClientSessionTimeout of the Reporting REST service (the default value is 15 minutes).
For more details, please check Cache Management.
Also, check the storage options. FileStorage is suitable if the application is hosted on a single instance. In this case, the application must have proper read/write rights for the folder specified by the FileStorage.
For a web farm, the storage options are MsSqlServerStorage or RedisStorage - REST Service Storage.
Regards,
Katia
Telerik by Progress
I am getting this exact error in production only. I'm unable to recreate this locally while debugging or in our testing environment which is a single server in house.
Our production server consists of two servers with load balancing. Our clients wish to increase the login session timeout to 4hrs or 240 minutes. Changing the ReportSharingTimeout and the ClientSessionTimeout basically doesn't work in this case. When leaving a report idle for 20 minutes and trying to navigate using the back/forward buttons I am receiving this exact message prompting the user to refresh.
I have created the MsSqlServerStorage but am unsure how to implement it.
I am experiencing this exact same error in production only. Our production consists of two servers in a load balanced environment.
I've set the client session and the report sharing timeouts to 240 (4hrs) and experience these timeout errors after 20 minutes of no activity. Whenever users navigate back/forward within the viewer these errors pop up. Is this a case where i need to use Telerik.Reporting.Cache.MsSqlServerStorage? I have already created the database for this but is there a detailed coding example for how to implement this?
I've set the client session and the report sharing timeouts to 240 (4hrs) and experience these timeout errors after 20 minutes of no activity. Whenever users navigate back/forward within the viewer these errors pop up. Is this a case where i need to use Telerik.Reporting.Cache.MsSqlServerStorage? I have already created the database for this but is there a detailed coding example for how to implement this?
The Reporting REST Service (WebAPI controller)) and HTML5 Viewer work in client-server architecture independent from the web application custom settings like forms authentication and/or session. You will have to synchronize the custom settings' timeouts with the ajax requests sent by the viewer to the service on submitting a request.
For example and further details, please check this forum post.
Regards,
Stef
Telerik by Progress