We have a .net webforms page that selects a file via a RadAsyncUpload control (the upload part is working fine). After the file has been selected and transferred to the server in the background by the async upload, the user clicks a button to begin processing the file in the page's code-behind.
We had previously created added a ProgressArea to the page, hoping that the communication between the server and the client would prevent the page from timing out during long processes (the processing of a file can take up to 30 minutes). However, while the ProgressArea worked and was a definite improvement, the page request would still not have the response sent until the entire code-behind processing was complete, and thus the page would hit the http timeout limit (2 mins by default, I believe) before the server was finished processing, and we would get a "System.Web.HttpException (0x80004005): Request timed out." error. Finally, we ended up just extending that page's timeout to an hour with the code
in the Page_Load event.
However, our product is available not just hosted on our servers but also as an on-site web application on customers' servers -- this addresses security issues and regulations some of our customers have. As a result, we do not have full control over the environment in which the software runs. We've recently had a customer add AWS Cloudfront for content delivery, which has its own timeout settings. This customer does not wish to set their Cloudfront http timeout to an hour, so our setting on the web application page doesn't matter.
What I am looking for is a way to keep that full response (as initiated by the user clicking the "Process" button) from timing out by keeping the server and client communicating during the processing in such a way as the http timeout doesn't get hit. If I understand correctly, the ProgressArea sending information back from the server to the client does not "count" as part of the response the page is waiting for, so does not keep the http connection alive to prevent a timeout.
I had previously tried explicitly calling the processing from an ajax post from in a loop on the client, and while I was able to do this, the performance was drastically impacted for the worse.
Is there any way with the ProgressArea, ProgressManager, or some other telerik control to keep an http connection alive for the duration of a long process without having to change the timeout settings of any layer between the client and the web server?