I have an ASP.NET site running in IIS that I've noticed seems to run slow if one page is slow, so I set up a test to see if it was running as if it was a single thread (i.e. if one page request is running, all others must wait). I created a very simple page (no master page, only has the default aspx code except I added a Literal to dump debug code into) with code to read the current time, sleep 10 seconds, and then exit, like so:
protected void Page_Load(object sender, EventArgs e)
{
DateTime now = DateTime.Now;
System.Threading.Thread.Sleep(10000);
Literal1.Text = now.ToShortDateString() + " " + now.ToShortTimeString() + " " + now.Second + ":" + now.Millisecond;
}
I then open the page in two different tabs at the same time. The timestamp on each tab is almost exactly 10 seconds apart, which seems to me to mean that the second page request is blocked and waits until the first one completes before running.
I tried commenting out all http modules in web.config and disabling all code in Global.asax, but I still see this issue.