Big Uploads with IIS 6.0



I've already posted this question on the IIS forum, but it seems the problem
is not IIS related. I have an ASP.NET application that does big uploads on
the server (around 50Mo-100Mo). It works perfectly well on all versions of
the .NET framework on IIS 5.x, but on IIS 6.0 when the file is big, the
upload fails randomly (as if the server had given up on the request).

At first, I thought it was related to the size of the file, though I had put
a very high limit for httpMaxRequest, but it was not the case, since
sometimes files around 60Mo would pass, and sometimes 10Mo wouldn't.

It's not memory related either, the w3wp.exe process doesn't grow that much.

The error would never come at a the same time, even for the same file (for a
10Mo file, it would pop at 3'45'' or 3'14'', randomly).

Then, I thought about timeouts : and there it was, when putting a very high
timeout in the web.config file, all uploads pass. But the timeout stops the
request before it hit any code in the aspx page (I put a debug instruction at
the very first line to make sure of that), so it'sno need putting the timeout
value in the page. My guess is that the ASPNET ISAPI filter in IIS 6.0 kernel
mode starts the timeout when the request is first initiated on the server,
though at this time the request is not complete (the server only has headers
and stuff that permits it to determine that ASPNET has to be called, but it
doesn't have the whole multipart content). Then, it waits for the rest of the
request to arrive from the network. When the request is here, the filter
examines the request once again, realizes the time is up, and stops
everything. In IIS 5.x, the request would be first entirely read in IIS, then
given to the aspnet.exe worker process that would start its timeout only at
this time.

Can anybody from Microsoft tell me if I am right ? If so, can I consider
this is a bug, or at least something that people should be aware of ? If this
is the case, can I work around the problem by providing a HttpModule that
would set the timeout appropriately only for those types of request, because
it's always good to have low timeouts for normal requests ?

Thanks for reading this long post.

Regards

François Lemaire
.



Relevant Pages

  • Re: Page Cannot Be Displayed Errors
    ... In WFetch, for Advanced Request, change to "Add Headers" and write: ... > directly on the web server, ... >>> Where can I get the IIS 6.0 Resource Kit, and how do I use WFetch? ...
    (microsoft.public.inetserver.iis)
  • Re: SSL broken after Windows 2003 upgrade
    ... The svchost.exe you reference is "IIS". ... routes them to the appropriate w3wp.exe based on configuration from WAS ... WFetch can make both a normal SSL request as well as a Client-Certificate ...
    (microsoft.public.inetserver.iis)
  • Re: IIS Extensions in URL causes filter to break.
    ... If your filter operates the way you say, ... IIS can only say that one or more of the events contain ... every request, and maybe more than once, depending on whether the URL causes ... As for the order of handling between ISAPI Extensions and Filters - Filters ...
    (microsoft.public.inetserver.iis.security)
  • Re: Suspicious IIS Log entry
    ... Your firewall will allow the request ... Your IIS web server is configured to let anyone access the ... hacker is requesting that the computer access the scripts directory, ...
    (Security-Basics)
  • Re: PKZIPC, ASP and WSH
    ... does NOT wait for it to finish processing before completing the ASP page ... Go to Services control panel applet and change both the "IIS Admin ... make a request to your ASP page ... Dynamic File, Directly Executable -- these are CGI EXE and ISAPI DLLs ...
    (microsoft.public.scripting.wsh)