简体   繁体   中英

Response.Redirect doesn't work after 2 minutes subroutine

I've bound an asp button to a subroutine that generates an xls file through these steps:

  1. Executes some sql queries (successfully)
  2. Builds the excel file with the resulting data sets (successfully, 2MB)
  3. Redirects the current page to a "DownloadPage.aspx?filename=" with the standard operations to build and download the file

But at this point it doesn't start any download even if the excel file is available in the source folder. The strange thing is that sometimes it works, randomly. No exception is throwed but the Thread Abort dued to redirection.

So, I haven't other ideas...Do you?

Thanks

ps I've tried to set some IIS parameters to 6 minutes or over.

I think the web browser has run into a time-out requesting your page. So the redirect can not work.

2 minutes is a very long time for a web request. Long enough that most clients will give up, either by means of the browser timing out or the user navigating away. Why does it take so long to fulfill the request? Is there a significant bottleneck you can improve? Running some SQL queries and building an Excel file shouldn't take that long. It's also considered a very bad idea from the perspective of the server to have a request hold up IO for so long. If there are many users they can grind the server to a halt by normal use of the site.

If it really is supposed to take so long, you may want to consider an asynchronous approach. Instead of having the user wait for a redirect, immediately provide some kind of feedback. Send the user to a page indicating that their request has been received and is being processed. They can then continue to use the site. When their data is ready, the site can provide some kind of notification link to let them know.

On the back end, the site can either kick off another thread to do the work. Or, and this is often better for a web application, you can queue the request in a database and have a Windows Service or scheduled console application poll that database for new requests, process them, and save the output where the web application can look for it. Then the notification system in the web application would just check for output with each request (or maybe poll it via AJAX or something cool like that) to notify the user that the data is ready.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM