I have a sample project on my site that handles this by kicking of the long running process in a new
thread, and returning a response immediately.
The response page has a meta refresh tag in it that causes it to refresh every
n seconds; checking the status of the long running process with each iteration. When the process is done, it forwards to the results page.
See:
http://simple.souther.us/not-so-simple.html Look for LongRunningProcess.
Also, for processes taking more than 15 or 30 seconds, you might want to consider implementing an email notification so the user doesn't have to sit and wait for the process to complete.