ASP.NET-Dateiuploads stoppen alle anderen Anforderungen auf der Website

8

Wir haben ein Webportal mit einer Seite, auf der Benutzer bis zu fünf Dateien gleichzeitig hochladen können. Die Seite hat nur 5 standardmäßige ASP.NET FileUpload-Steuerelemente.

Das Problem ist, dass wenn ein Benutzer Dateien hochlädt, es alle anderen Aktivitäten auf der Seite zum Stillstand bringt. In den 1-2 Minuten, die der Upload dauert, sehen wir, dass Anfragen beginnen, sich anzumelden und den Durchsatz auf Null zu reduzieren. Sobald die Dateien fertig sind, wird alles fortgesetzt. (Wir benutzen New Relic, um uns zu zeigen, was vor sich geht)

Wir haben es nicht mit einer häufig verwendeten Funktion zu tun, und die hochgeladenen Dateien sind nicht groß. Allerdings haben wir das Hochladen von 4 Dateien mit je ca. 70kb dafür gesehen.

Einige Nachforschungen haben mich zu diesem Blogpost . Leider erfordert das Produkt, das sie verkaufen, Server 2008 und IIS7 und der Client 2003 und IIS6. Darüber hinaus scheint es nicht, dass 4 winzige Uploads diesen Effekt haben sollten.

Also, ist jemand anders in diese Situation geraten oder weiß etwas, das hätte falsch gemacht werden können, um dieses Problem in einem so kleinen Maßstab zu verursachen? Vielleicht gibt es falsche App-Pool- oder web.config-Einstellungen, die wir betrachten sollten, die den Durchsatz drosseln würden?

    
Ryan 09.09.2011, 17:16
quelle

5 Antworten

1

Versuchen Sie, Delegaten zum asynchronen Hochladen zu verwenden. Es könnte helfen.

    
Amit Ranjan 18.09.2011 21:49
quelle
0

Warum versuchst du nicht, deine Upload-Steuerelemente in ein Update-Panel zu stellen? Ich denke, dass die Upload-Anfrage separat behandelt wird. Lass es mich wissen, wenn das funktioniert.

    
Amandeep Singh Saini 24.10.2011 07:45
quelle
0

Auf die Chance, dass, wenn Sie sagen, alle anderen Aktivitäten auf der Website zum Stillstand kommen, stellt sich heraus, nur auf den Clients, die das Hochladen tun (EDIT: Ich sehe, dass Sie in einem Kommentar anders angegeben), und wenn Sie müssen während des Uploads keine Daten in die Session schreiben. Die Lösung wäre einfach: Ändern Sie die Seite / handler / WebMethod, die den Upload akzeptiert, so dass sie nicht wie folgt in die Session schreiben kann:

  • Fügen Sie für eine Seite EnableSessionState="false" oder hinzu EnableSessionState="ReadOnly" für die @ Page -Direktive.
  • Entfernen Sie für einen generischen Handler IRequiresSessionState aus der Klassendeklaration oder ersetzen Sie sie durch IReadOnlySessionState .
  • Verwenden Sie für einen WebMethod die EnableSession -Eigenschaft von das Attribut WebMethod : [System.Web.Services.WebMethod(EnableSession=false)]
weir 28.10.2011 14:49
quelle
0

Wenn Sie das ASP-Fileupload-Server-Steuerelement verwenden, fügen Sie diesen Code zu web.config

hinzu %Vor%

ändern Sie einfach executionTimeout="110" maxRequestLength="4096"

    
hassan mahboob 30.11.2011 19:56
quelle
0
  1. Zypern
      Mit
    • können Sie einzelne oder mehrere Dateien hochladen. Jede Datei wird an - & gt;
    • gesendet

- & gt; 2. Web generischer Handler - Hier können Sie die Größe, die Erweiterung, den Speicherort usw. überprüfen.

  1. Beantworte nach dem Upload einige msg / do-Aktionen.

Diese Art von Struktur hat nichts mit Ihrer Website Geschwindigkeit ... es ist wie er diese Dateien auf andere Seite hochladen. Es ist auch gut zu denken, dass mehrere Dateien nacheinander hochgeladen werden.

    
Novkovski Stevo Bato 16.12.2011 06:34
quelle