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.
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
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?
Versuchen Sie, Delegaten zum asynchronen Hochladen zu verwenden. Es könnte helfen.
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.
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:
EnableSessionState="false"
oder hinzu
EnableSessionState="ReadOnly"
für die @ Page
-Direktive. IRequiresSessionState
aus der Klassendeklaration oder ersetzen Sie sie durch IReadOnlySessionState
. EnableSession
-Eigenschaft von das Attribut WebMethod
: [System.Web.Services.WebMethod(EnableSession=false)]
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"
- & gt; 2. Web generischer Handler - Hier können Sie die Größe, die Erweiterung, den Speicherort usw. überprüfen.
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.
Tags und Links asp.net performance file-upload