If the only error is rsExecutionNotFound that could be different than the "report server execution xxxx has expired or cannot be found". I'm guessing you just shortened things - it is a pain to type of the full error message.
Either way, it will be in the Reporting services log which would give you more information. And there is some information in the Execution Log views to help you track things down. You just need to know what to look at. You could increase timeout values but that can also have some side effects. I would probably want to monitor that session and see if it actually hit a timeout.
When/if you get the error, report server execution xxxx has expired, check for that xxx value in the ReportServerTempDB database in the SessionData table. That is the SessionID. That can be correlated back to the ExecutionLog3 and the ExecutionID.
Just from there you can find a lot of what is going on. Are you using the same sessionid on each hit to the report or different ones on each request. Normally it's different sessionids but in some scenarios you can be using the same one each time. So if that runs over the session timeout periods, that would explain things.
Did you really hit a timeout with that sessionid? You can tell by the first start time in the Executionlog view or you get more details if the sessionid is still in the SessionData table in ReportServerTempDB. So you can tell a lot by just checking these things.
And you can find the timeout values if you query the ConfigurationInfo table.
At at the system level, the SystemReportTimeout is the same as what you have if you go to the Report Manager URL, go to site settings and the general page on the right has the Report Timeout Settings.
At the session level, you have session timeout and SessionAccess Timeout (usually depends on what version of SSRS for the Session Access value). These are in the properties for SSRS in SSMS if you connect to the ReportServer, on the server name do properties and go to advanced.
At this point, if you don't have a good idea or want to test the different settings, the easiest one would be the Site Settings and just set the Report Timeout to Do Not Timeout. And see if you get the error.
I can't tell how you are actually running your program to test but I would first guess it's a session timeout setting. In the SSRS server properties in SSMS, I would increase that to something more than 10 mins which is the default 600 secs. You don't want to go overboard with that since it can increase the time things are left in the ReportServerTempDB and consequently affect the size. The SessionAccessTimeout should be a different error in the Reporting Services log - I think the timeout shows up with a call to GetSessionData, can't remember for sure. But I would guess that's not the issue.
All of that should give you enough info to check into what's going on and change whatever timeout values you may need to change. Hope that helps - please post back on if you get it resolved or still have problems or questions.