2010-02-15 11 views
8

Wie setze ich den maxAllowedContentLength-Wert pro Aktion?MaxAllowedContentLength/maxRequestLength-Wert pro Aktion festlegen

Ich habe ein paar Aktionen, die zum Hochladen von Dateien verwendet, jeder benötigt einen anderen maxAllowedContentLength-Wert.

Es ist sinnvoll, dass wir keine Aktionsfilter verwenden möchten, da wir diese Anfrage auf IIS-Ebene filtern möchten. Auf der anderen Seite ist Action-Filter die beste Lösung aus der Perspektive der Codierung, wie sie kommen nach die Routen, so dass ich die Routen ändern, es weiterarbeiten.

In IIS6 kann ich <location> Tag verwenden, um maxRequestLength zu einem bestimmten Speicherort anzugeben. Ich weiß nicht, wie ich diesen Ansatz für IIS7 verwenden kann, und ich mag diesen Ansatz nicht, da die URL-Routen in der Datei web.config von Hand codiert sind.

Was ist die beste Lösung, um dieses Problem zu lösen?

+1

Schade, dass diese Frage nie beantwortet wurde - es ist ein sehr wichtiges Thema beim Programmieren von Datei-Upload-Seiten mit ASP.NET MVC. –

Antwort

1

Ich habe keinen Weg gefunden, das zu erreichen, und ich glaube nicht, dass es da ist. Wahrscheinlich ist es das Beste, eine andere IIS-Website für die Dateidownload-Aktionen mit der benutzerdefinierten web.config zu verwenden.

+0

Es muss einen Weg geben .. :) Wahrscheinlich sollten Sie in der Lage sein, Reflexion und Hack in die. NET-Laufzeit zu verwenden und die Konfiguration zu ändern. Nicht einfach, aber es sollte funktionieren? (Ich habe in der Vergangenheit ähnliche Dinge getan, um Auth-Schlüssel unter anderen zwischen Anwendungen zu synchronisieren.) – Onkelborg

+0

@Onkelborg möchte eine detaillierte Antwort zu diesem Thema geben? als kann ich es als Antwort akzeptieren ... –

+0

Ich habe mit Hilfe von ILSpy in das Framework gegraben und etwas gegraben. Ich denke, der einfachste Weg wäre, die web.config neu zu schreiben und dann zu akzeptieren, dass die Anwendung einmal neu gestartet wird. Es scheint jedoch möglich zu sein, In-Memory zur Laufzeit neu zu schreiben, aber es ist ziemlich fummelig. Ich glaube nicht, dass Sie eine andere maxAllowedContentLength pro Speicherort haben können, aber Sie können eine andere maxRequestLength pro Speicherort haben. – Onkelborg

0

Erstellen Sie eine separate virtuelle Website für den Bereich, der unterschiedlich gefiltert werden soll.

Dann führen Sie diesen Befehl auf Ihrem IIS-Server. (Ersetzen [IISWebsitename])

C:\Windows\System32\inetsrv>appcmd set config "[IISWebsitename]" -section:requestFiltering -requestLimits.maxAllowedContentLength:100000000 -commitpath:apphost 

das zu einer Zeit 100.000.000 Bytes Upload-Daten ermöglicht für diese eine Website.

+1

Ich mag es nicht, die Befehlszeile zu verwenden. Aber wenn ich bereits eine andere Site verwende, kann ich die Datei "Web.config" verwenden, um maxAllowedContentLength festzulegen. –

Verwandte Themen