Table of Contents
Troubleshooting AJAXUploader

Overview

EO.Web AJAXUploader relies on a server side module (EO.Web.Runtime) to function. Like any other ASP.NET module, it participates ASP.NET request pipeline and processes certain requests sent by AJAXUploader client script. Elements that have control over the request before it reaches the uploader's server side module can cause the uploader to stop working if it abandons the request (without passing it downstream) or prefetch the request data.

Disable ASP.NET tracing

ASP.NET tracing intercepts the request before other modules and tries to prefetch the whole form data into memory. In case of a file upload request, this means prefetching the whole file data into memory. This prevents the request from reaching AJAXUploader server module before the whole file is transferred, and the tracing code itself often fails due to memory constrains before it finishes, due to the fact that the file to be uploaded is often big.

Check IIS 6 request size limit

IIS 6 can be configured to reject a request if its content size exceeds the preset limit. In this case one would often observe that the uploader works for small files, but once the file size is over a certain limit, it stops working.

If this is the case, consider increasing MaxRequestEntityAllowed value. To do this, follow these steps:

  1. At a command prompt, type the following command, and then press ENTER:

    cd drive:\inetpub\adminscripts

    In this command, drive is the drive where IIS is installed.

  2. At a command prompt, type the following command, and then press ENTER:

    cscript adsutil.vbs set w3svc/ASPMaxRequestEntityAllowed size

    In this command, size is the file size limit in bytes. Note the limit can also be set on a virtual directory. If that is the case, you may also need to adjust the setting on virtual directories.

Check IIS 7 request filtering

IIS 7 can be configured to filter certain requests based on various conditions such as verbs, request size, file extensions, etc. Request size filters are often used to refuse requests that are over a certain size limit. However this can cause IIS 7 to refuse upload request when the file to be uploaded is over the preset limit. In this case one would often observe that the uploader works for small files, but once the file size is over a certain limit, it stops working.

If this is the case, consider increasing the request size limit using the following command:

appcmd set config "SiteName/AppName" -section:requestFiltering -requestLimits.maxAllowedContentLength:104857600 -commitpath:apphost
AppCmd.exe is the single command line tool for managing IIS 7.0. It is located in the %systemroot%\system32\inetsrv\ directory. So you may need to switch into that directory before using this command.

Note SiteName and AppName should be replaced with the real site name and application name. For example, the following command sets a maximum request size that is about 100M for EO.Web demo application:

appcmd set config "Default Web Site/EOWebDemo_Net20_CS" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost

More information about this command can be found in this Microsoft TechNet article.

This setting can also be set in your web.config. The following config file changes the maximum request size to about 100M:

web.config
<configuration>
   <system.webServer>
      <security>
         <requestFiltering>
            <requestLimits maxAllowedContentLength="100000000"/>  
         </requestFiltering>
      </security>
   </system.webServer>
</configuration>

Check other HTTP modules

If your application also use other HTTP modules, try temporarily removing/disabling them and see if it resolves the issue. Similar to the case of ASP.NET tracing, a module can cause the AJAXUploader to stop working if it abandons the request or prefetch the request data before it reaches the AJAXUploader.

Try a regular file input element

Most configuration issues that causes AJAXUploader to stop working also causes a regular HTTP file input element to stop working. Using the following simple code to verify if this is the case:

HTML
<form id="Form1" runat="server" 
    method="post" enctype="multipart/form-data">
    <input type="file" size="50"> 
    <input type="submit" value="Submit">
</form>
Note the form's enctype property must be set to multipart/form-data (not necessary when using AJAXUploader).