V
VH
Hi, all.
Need help with what seems to be either connection, or threading problem in
my ASP.NET 2.0 application.
The gist of the problem is this: IHttpHandler in my application serves an
HTML page that has two images (image A and image B) in it. Once the HTML page
is served, expected behavior is this:
1) receive request for image A,
2) receive request for image B almost at the same time as for A,
3) serve image A response,
4) serve image B response.
Actual behavior is instead:
1) receive request for image A
2) serve image A response
3) receive request for image B
4) serve image B response
The application acts as if it allows only ONE connection from the browser
instead of two. This decreases the performance (as experienced by users)
quite a bit.
Additional details.
My ASP.NET application has ASPX pages, ASMX web services and IHttpHandler
that serves resources described before. I suspected that the problem may be
caused by the running out of inbound connections on my (Vista/IIS7 with
classic pipeline) dev box, but the same behavior is observed on IIS6 on
Windows Server 2003.
The strangest thing is that when tracing HTTP sessions using Fiddler, I see
that *browser sends both image requests requests virtually at the same time*
but second request reaches my IHttpHandler only after first one was served! I
played with ASP.NET threading settings to no avail. Requests served by
IHttpHandler have somewhat longer latency by design: from milliseconds to up
to 9 seconds. Also, when I launch multiple browsers pointing to the html page
with images, I get requests from different browsers coming in parallel. It
looks like for some reason only requests from the same browser come in
sequentially. Tried turning keep-alive on and off on the application and it
made no difference.
Why would two requests sent by browser at the same time arrive in a manner
implying only one connection to the browser instead of two?
Thank you,
Vlad.
Need help with what seems to be either connection, or threading problem in
my ASP.NET 2.0 application.
The gist of the problem is this: IHttpHandler in my application serves an
HTML page that has two images (image A and image B) in it. Once the HTML page
is served, expected behavior is this:
1) receive request for image A,
2) receive request for image B almost at the same time as for A,
3) serve image A response,
4) serve image B response.
Actual behavior is instead:
1) receive request for image A
2) serve image A response
3) receive request for image B
4) serve image B response
The application acts as if it allows only ONE connection from the browser
instead of two. This decreases the performance (as experienced by users)
quite a bit.
Additional details.
My ASP.NET application has ASPX pages, ASMX web services and IHttpHandler
that serves resources described before. I suspected that the problem may be
caused by the running out of inbound connections on my (Vista/IIS7 with
classic pipeline) dev box, but the same behavior is observed on IIS6 on
Windows Server 2003.
The strangest thing is that when tracing HTTP sessions using Fiddler, I see
that *browser sends both image requests requests virtually at the same time*
but second request reaches my IHttpHandler only after first one was served! I
played with ASP.NET threading settings to no avail. Requests served by
IHttpHandler have somewhat longer latency by design: from milliseconds to up
to 9 seconds. Also, when I launch multiple browsers pointing to the html page
with images, I get requests from different browsers coming in parallel. It
looks like for some reason only requests from the same browser come in
sequentially. Tried turning keep-alive on and off on the application and it
made no difference.
Why would two requests sent by browser at the same time arrive in a manner
implying only one connection to the browser instead of two?
Thank you,
Vlad.