Hi, we are using reportViewer + reportServices, in a single-page application.
We configured SQL server storage, and we set an expiration of 12 hours.
Problem is, when the user let its screen opened, and come back the day after, and he clics "next page", or change the parameters to generate a new report, we get the "410 Gone" error.
Yes, we can increase the timeout to 24 hours, but what about weekends?
Ok we can set it to 7 days... but we don't want to.
We try to catch that error in the "error" event of the viewer, but depending on the action we take, the error is not always the same, and we get wrong informations about the real cause of the error. When refreshing data, there's no informations about expiration of the instanceID. We only get it when navigating on an existing report.
If I change the page, I get a "gone" error message.
If I change the parameters, I get something else.
When I look at fiddler, and I catch my "xhr" error at high level, I can trap these 410 errors.
The question is:
Is it possible to start a new session from scratch when we detect that issue without restarting the application (F5)?
We think about calling refreshReport every 3 hours, but it's not a gold solution...
I think that you should implement "keepAlive" process to keep the clientID always ready when the viewer is loaded on screen.
Also, after a few months, we see that the SQL database is full of outdated data, I did not find any official method to say to the storage "Delete all temp data older than 7 days".
I created a stored procedure based on the "tr_string.values" data, but it's not the best.
(SELECT * FROM tr_String AS ts WHERE LEN(VALUE) = LEN('yyyy-MM-ddThh:mm:ss') AND VALUE < '2020-01-13T00:00:00')
From that query, I am able to destroy outdated ids from 4 tables. But, is there a better method?