2010-02-15 4 views
8

Come si imposta il valore maxAllowedContentLength per azione?Imposta valore MaxAllowedContentLength/maxRequestLength per azione

Ho alcune azioni utilizzate per caricare i file, ognuno ha bisogno di un valore maxAllowedContentLength diverso.

Ha senso che non vogliamo usare i filtri di azione perché vogliamo filtrare questa richiesta a livello di IIS. D'altra parte, il filtro di azione è la soluzione migliore dal punto di vista della codifica, poiché arrivano a dopo i percorsi, quindi i percorsi cambiano, continua il lavoro.

In IIS6 so che è possibile utilizzare il tag <location> per specificare maxRequestLength in una posizione specifica. Non so come usare questo approccio su IIS7, e non mi piace questo approccio, dal momento che le rotte URL sono codificate a mano nel web.config.

Qual è la soluzione migliore per risolvere questo problema?

+1

Peccato che questo non abbia mai ricevuto risposta: è un argomento molto importante quando si programmano le pagine di caricamento dei file con ASP.NET MVC. –

risposta

1

Non ho trovato un modo per farlo, e non penso che ci sia. Probabilmente la cosa migliore da fare è utilizzare un sito Web IIS diverso per le azioni di download dei file, con web.config personalizzato.

+0

Ci deve essere un modo .. :) Molto probabilmente, dovresti essere in grado di usare reflection e hackerare nel .net runtime e modificare la configurazione. Non è facile, ma dovrebbe funzionare? (Ho fatto cose simili in passato, per sincronizzare le chiavi di autenticazione tra le altre applicazioni.) – Onkelborg

+0

@Onkelborg vuole dare una risposta dettagliata a questo proposito? di quanto sarò in grado di accettarlo come risposta ... –

+0

Ho scavato nel framework con l'aiuto di ILSpy e ho scavato un po '. Penso che il modo più semplice sarebbe riscrivere il web.config e quindi accettare che l'applicazione si riavvii una volta. Tuttavia, sembra che sia possibile riscrivere in memoria in fase di runtime, ma è piuttosto laborioso. Non penso che tu possa avere un limite maxAllowedContentLength diverso per posizione, ma puoi avere un valore maxRequestLength diverso per posizione. – Onkelborg

0

Creare un sito virtuale separato per l'area che si desidera filtrare in modo diverso.

Quindi eseguire questo comando sul proprio server IIS. (Sostituire [IISWebsitename])

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

che consente 100.000.000 byte di dati di upload in un momento per il sito web uno.

+1

Non mi piace usare la riga di comando. Ma se sto già usando un sito diverso, posso usare il web.config per impostare maxAllowedContentLength. –

Problemi correlati