2008-10-15 4 views
8

Plattform: IIS 6, ASP.Net 2.0 (.Net 3.5), Server 2003.Wie konfiguriere ich IIS für die Verarbeitung wirklich großer Datei-Uploads?

Ich erstelle eine Anwendung, die Dateien von einem Benutzer akzeptiert, verarbeitet sie und gibt ein Ergebnis zurück. Die Datei wird mithilfe von HTTP POST in ein ASP.Net-Webformular hochgeladen. Die Anwendung erwartet einige große Dateien (Hunderte von MB).

Ich verwende SWFUpload, um den Upload mit einem netten Fortschrittsbalken durchzuführen, aber das trägt nicht zum Problem bei, denn wenn ich es mit einem Standard-HTML-Formular umgehe, das auf meine Upload-Accepter-Seite zeigt, bekomme ich den exakt gleichen Fehler . Wenn Sie den Fortschrittsbalken verwenden, wird der Upload zu 100% fortgesetzt und schlägt fehl. Bei einem Standardformular scheint das Verhalten identisch zu sein.

Ich habe gerade ein Problem beim Hochladen einer Datei, die ungefähr 150 MB groß ist. Ich habe alle Einstellungen geändert, die ich finden kann, aber immer noch kein Glück.

Hier ist eine Zusammenfassung dessen, was ich bis jetzt geändert haben:

In Web.config: hat dieses Bild im Inneren system.web:

<httpRuntime executionTimeout="3600" maxRequestLength="1536000"/> 

In machine.config: Innen system.web , verändert:

<processModel autoConfig="true" /> 

zu:

und in MetaBase.xml: Geändert:

AspMaxRequestEntityAllowed="204800" 

zu:

AspMaxRequestEntityAllowed="200000000" 

Wenn der Upload fehlschlägt, ich einen 404-Fehler von IIS erhalten. Mein Webformular beginnt nicht mit der Verarbeitung, oder zumindest nicht mit dem Ereignis Page_Load. Ich habe am Anfang dieses Handlers eine Ausnahme ausgelöst, die bei großen Dateien nicht ausgeführt wird.

Alles funktioniert gut mit kleineren Dateien (Ich habe bis zu etwa 5,5 MB getestet). Ich bin nicht genau sicher, welche Dateigröße das Limit ist, aber ich weiß, dass mein Limit höher als 150 MB sein muss, da dies nicht die größte Datei ist, die der Client hochladen muss.

Kann jemand helfen?

Antwort

4

Urlscan war auf allen Webseiten aktiv, und seine eigene Anforderungsentität Längenbegrenzung hat. Ich war nicht bewusst, dass Urlscan auf unserem Server ausgeführt wurde, weil es sich um eine globale ISAPI-Filter war, nicht aktiv auf meiner individuellen Website.

Hinweis: global ISAPI-Filter zu finden, direkt auf den Ordner Websites klicken in IIS Admin und klicken Sie auf Eigenschaften, dann auf die Registerkarte ISAPI-Filter

2

Wenn wir in dieser Ausgabe führten wir die Puffergröße Grenze nach diesem KB-Artikel zu erhöhen hatte: http://support.microsoft.com/kb/944886/en-us

Ich weiß, das erwähnt ASP, aber ich glaube, es ist auch für ASP.NET gearbeitet.

Edit: Hier ist ein Link, der zu Ihrem Problem mehr relevant sein könnte und andere Optionen zur Verfügung stellen:
http://weblogs.asp.net/jgalloway/archive/2008/01/08/large-file-uploads-in-asp-net.aspx

+0

Der erste Artikel ist auf Downloads, nicht in Uploads, aber ich versuchte, es jedenfalls, ohne Erfolg. Der Jon Galloway Artikel deckt die oben erwähnten Dinge ab. –

+1

Ja, ich habe deine Frage noch einmal durchgelesen und festgestellt, dass mein erster Link falsch war, aber ich fühlte mich merkwürdig, wenn ich einfach alles herausnehmen würde. Also habe ich mich ein bisschen weiter umgeschaut und den zweiten Link als Editierup gepostet. Ich hoffe, die zweite Verbindung hat geholfen. –

1

404 und fehlende Page_Load: IIS kann nur die Anforderung verarbeiten, sobald die vollständige POST auf dem Server ist. Wenn der POST (aufgrund seiner Größe) fehlschlägt, kann er daher die Ereignisse der Seite nicht auslösen.

Sie könnten versuchen NeatUpload . Aus dem Handbuch: "Standardmäßig beschränkt NeatUpload die Größe der Uploads nicht direkt."

0

Sie auch Velodoc XP Edition versuchen können, die mehrere Vorteile gegenüber NeatUpload einschließlich der Tatsache hat, dass. Es verwendet ASP.NET Ajax-Erweiterungen. Weitere Informationen finden Sie auch unter the Velodoc web site.

0

Sie sagen:

Aber 1536000 nur 1,5 MB ist?

+0

Diese Größe ist in Kilobyte, so ist es tatsächlich ~ 1,5 GB. –

1

(Ein Hinweis für Googler):

Für IIS7 hinzufügen unten an web.config (I hinzugefügt oben <system.serviceModel>):

<system.webServer> 
     <security> 
      <requestFiltering><requestLimits maxAllowedContentLength="262144000" /></requestFiltering> <!-- maxAllowedContentLength is in bytes. Defaults to 30,000,000 --> 
     </security> 
</system.webServer> 
Verwandte Themen