PRB: Keine große Dateien hochladen, wenn das HtmlInputFile-Steuerelement verwenden

Problembeschreibung

Beim HtmlInputFile -Steuerelement zum Hochladen einer großen Datei verwenden, kann die Datei nicht hochgeladen.

Ursache

Dieses Problem tritt auf, weil der Standardwert für den Parameter MaxRequestLength < HttpRuntime > -Abschnitt der Datei Machine.config 4096 (4 Megabyte) ist. Dadurch werden Dateien, die größer als dieser Wert standardmäßig nicht hochgeladen.

Problemlösung

Um dieses Problem zu beheben, verwenden Sie eine der folgenden Methoden:

  • Ändern Sie in der Datei Machine.config Attributs MaxRequestLength des Konfigurationsabschnitts < HttpRuntime > Wert. Diese Änderung betrifft den gesamten Computer.
  • Überschreiben Sie in der Datei Web.config den Wert MaxRequestLength für die Anwendung. Der folgende Eintrag in der Datei Web.config kann beispielsweise Dateien kleiner oder gleich 8 Megabyte (MB) übertragen werden:
    <httpRuntime maxRequestLength="8192" />

Weitere Informationen

Dieser Wert ist standardmäßig auf 4 MB beschränkt Denial-of-Service-Angriffen.

Wenn Attributs MaxRequestLength in der Datei Machine.config festgelegt und dann eine Anforderung übermittelt wird (beispielsweise Dateiuploads) überschreitet den Wert MaxRequestLength, eine benutzerdefinierte Fehlermeldung Seite kann nicht angezeigt werden. Stattdessen wird Microsoft Internet Explorer eine Fehlermeldung "Server oder DNS kann nicht gefunden werden" angezeigt.


Die maximale Uploadgröße ist theoretisch ziemlich groß. Allerdings kann nicht durch ASP.NET Health monitoring, sehr umfangreicher Dateien in ASP.NET hochladen. ASP.NET Worker-Prozess hat einen virtuellen Adressraum von 2 Gigabyte (GB). ASP.NET Worker-Prozess verwendet jedoch nur wenig mehr als 1 GB wegen Health monitoring und Speicher Fragmentierung.

Während des Upload-Vorgangs lädt ASP.NET die gesamte Datei im Arbeitsspeicher, bevor der Benutzer die Datei auf der Festplatte speichern kann. Daher kann der Vorgang aufgrund der MemoryLimit Attribut ProcessModel -Tag in der Datei Machine.config wiederverwenden. Das MemoryLimit -Attribut gibt, der Prozentsatz des physischen Arbeitsspeichers ASP.NET Arbeitsprozess verbrauchen kann, bevor der Prozess automatisch wiederverwendet wird. Recycling wird verhindert, dass Speicherverluste verursacht ASP.NET abstürzt oder nicht mehr reagiert.

Darüber hinaus Rolle weitere Faktoren eine in die maximale Dateigröße, die hochgeladen werden kann. Dazu gehören Arbeitsspeicher, Festplattenspeicher, Prozessor und aktuelle Netzwerkverkehr. Mit regelmäßig Dateien geuploadet empfiehlt Microsoft eine maximale Dateigröße im Bereich von 10 bis 20 Megabyte (MB) verwenden. Wenn Sie nur selten Dateien geuploadet, möglicherweise die maximale Dateigröße 100 MB.


Hinweis Sie können Dateien hochladen, die größer als 100 MB in ASP.NET. Microsoft empfiehlt jedoch, die maximale Dateigröße hochladen befolgen, die in diesem Artikel erwähnten. Um genauere Dateigrößen zu ermitteln, führen Sie Belastungstests auf Computern, die denen ähneln, die in der Produktion verwendet werden.

Maximale Dateigröße beim Upload-Vorgang auftreten kann die folgenden Fehlermeldungen angezeigt:
  • Die Seite kann nicht angezeigt werden.
  • Server ist nicht verfügbar
    Im Ereignisprotokoll werden die Fehlermeldung ähnlich der folgenden:
  • Ausnahme vom Typ System.OutOfMemoryException ausgelöst wurde.
Möglicherweise finden Sie auch, dass Uploads sehr langsam erfolgen. Wenn Sie den Aspnet_wp.exe-Prozess im Windows Task-Manager beobachten, sehen Sie, dass der Speicherwert alle 1 bis 2 Sekunden um 64 KB ändert. Je nach Größe der Datei kann diese Verzögerung ASP.NET Worker-Prozess aufgrund eines ResponseDeadlock Recycling führen.
Eigenschaften

Artikelnummer: 295626 – Letzte Überarbeitung: 20.01.2017 – Revision: 2

Feedback