1

I have an asp.net webforms application that runs many separate instances for many customers, due to high traffic one of our customers requested their application to be moved to their dedicated server. However after migration, the Kendo File Uploader interacts differently.

On the old server all uploaded files would be processed one after the other and above 6 files the seventh would not be uploaded until the first is processed. This test done on an alternate instance takes about 20 seconds to complete.

Correct situation

However after the migration, all files are uploaded at the same time and when the first file in queue isn't fully uploaded yet, but the second is, then the entire upload hangs and stops updating. This situations does work eventually, but instead of the expected 20 seconds this process now takes over 30 minutes.

Failed situation

Things I've already figured out through trouble shooting and logging.

  1. The call hangs in the process of Kendo UI, since it doesn't arrive on the server.
  2. Both the code and web.config are the same for the old server instances and the new server.
  3. The error doesn't occur when I place breakpoint debugger; in the OnUpload function for the Kendo component. Unless I speed through the breakpoint instantly, so somehow giving the first file time to upload before starting the second does resolve it.

Basically the only thing I can still figure is that it is caused by a difference in the IIS configuration, but that's where my knowledge ends. So I hope anyone else encountered a problem like this.

Finally if people want more in depth code examples I could provide them. Here is at least the Kendo UI initialization.

$("#files").kendoUpload({
    async: {
        saveUrl: "FileUploadKendoUI.aspx",
        removeUrl: "FileUploadKendoUI.aspx",
        autoUpload: true
    },
    template: kendo.template($('#fileTemplate').html()),
    upload: onUpload,
    success: onSuccess,
    error: onError,
    select: onSelect,
    localization: {
        select: arrLabels[0],
        uploadSelectedFiles: arrLabels[1],
        dropFilesHere: arrLabels[2],
        headerStatusUploaded: arrLabels[3]
    }
});

And on the back end FileUploadKendoUI.aspx However I placed a log line in this code and it didn't even reach this place so the issue isn't found in here here.

public partial class FileUploadKendoUI : System.Web.UI.Page
{
    //Local params

    protected void Page_Load(object sender, EventArgs e)
    {
        //Code that obtains and sets some default information
        Remoteclass.InitializeSettings();

        //Code to process and save the file.
        ProcessRequest();
    }

    public void ProcessRequest()
    {
         //Do process
    }
}
kpp
  • 800
  • 2
  • 11
  • 27
  • First check the Event Viewer on the IIS to see if there are any exceptions. IIS do not allow applications to access the File System (users are GUESTS accounts by default). Did you publish and install application? For a Net project to run on a different machine either the same version of Net must be are the two machines or you need to publish the applicaiotn. – jdweng Feb 23 '21 at 12:14
  • What is the difference between the old server and the migrated server? If the codes are the same, I think it may be caused by the difference of the server. – Ding Peng Feb 24 '21 at 05:11
  • I am still doing some tests, but it seems that the old server still uses http1.1 protocol and the new server uses http2, which most likely means I need to pay Telerik to update the kendo ui components, since this application is old and probably uses an older version. – kpp Feb 24 '21 at 09:26

1 Answers1

0

Our application still used an older version of the Kendo UI Multifile Upload components, which caused some sort of pipeline errors on servers that host web applications on the HTTP2 protocol, because HTTP2 actually allows for true Multifile upload, while HTTP1.1 essentially spoofs this concept, but actually uploads files one by one.

A quick and dirty solution is to disable the HTTP2 protocol on the webserver via Regedit. This will cause the server to fall back on the HTTP1.1 protocol. How to disable HTTP/2 on IIS of Windows Server 2016

Or the clean solution is to update the Kendo UI Multifile Upload Components in the web application to the latest version.

kpp
  • 800
  • 2
  • 11
  • 27