A user initiates a large upload or download and is not able to browse to any other page of the website until the file transfer is complete. This behavior occurs when SessionState is enabled in your upload or download page. ASP and ASP.NET applications serialize requests within a given session, which means that concurrent requests from the same user will not execute simultaneously. They will execute one after the other. For typical web pages a user would never notice this because the Request and Response happen very quickly. However, a file transfer is different because the processing of a single request takes a very long time. Therefore if SessionState is enabled the user may experience the site as being unresponsive while the file transfer is in progress.
If you wish to allow your users to browse your site during an upload or download, you must change the SessionState settings for your FileUpEE page. The rest of the application can stay as it is.
In Classic ASP, your only option is to disable SessionState in the upload or download page, by adding the following directive to the top of the page:
<% @ENABLESESSIONSTATE = False %>
In ASP.NET you have two options:
- Disable session state. In ASP.NET, session state is disabled by default. If you have ENABLESESSIONSTATE set to "true" in your Page directive, simply change it to "false", or remove the parameter altogether
- Set session state to ReadOnly. This is a very useful option which can allow your upload/download page to participate in the session without causing a lock on the session. See the following MSDN article for in-depth explanation of how session state works in ASP.NET (The ReadOnly option is discussed under "Synchronizing Access to the Session State"): Underpinnings of the Session State Implementation in ASP.NET