Qual é a prioridade, maxRequestLength ou maxAllowedContentLength?

127

Ao alterar o tamanho máximo de arquivo permitido para upload, me deparei com essas duas configurações.

No sytem.web, você tem o nó de tempo de execução http com maxRequestLength . No system.webServer, você tem os requestLimits com maxAllowedContentLength .

Agora, qual é a prioridade sobre o outro? E precisamos definir os dois ou o último (o do IIS7) é suficiente?

Floris Devriendt
fonte

Respostas:

196

maxRequestLength indica o tamanho máximo da solicitação suportada pelo ASP.NET, enquanto maxAllowedContentLength especifica o tamanho máximo do conteúdo em uma solicitação suportada pelo IIS. Então, você precisa definir os dois para enviar arquivos grandes: o menor "tem prioridade".

(Eu peguei isso em http://forums.iis.net/t/1169846.aspx - crédito onde é devido.)

Você pode definir ambos como locais para um site específico ou mesmo para uma pasta em um site editando o arquivo web.config apropriado. Se o comprimento do arquivo (bem, solicitação) for menor que maxAllowedContentLength, mas maior que maxRequestLength, o usuário receberá sua página de erro padrão (ASPX), se você tiver uma. Se for o contrário, ele receberá uma página de erro do IIS. Por esse motivo, convém ter maxAllowedContentLength com um valor muito grande (apenas para este site / pasta) e, em seguida, ter o valor limite como maxRequestLength.

Por fim, lembre-se de que maxRequestLength está em KB, enquanto maxAllowedContentLength está em BYTES!

Ed Graham
fonte
Eu tenho três controles de upload na minha página, onde o controle de upload tem um limite de 50 MB. Portanto, estou carregando um total de 150 MB de uma só vez. Minha configuração é maxAllowedContentLength = "51200000" & ExecutionTimeout = "1200" & maxRequestLength = "51200". qual o comprimento que devo mudar aqui. Por favor sugira.
Nirav Vasoya
21

A resposta curta e doce é que o menor dos dois terá precedência. Uma palavra de conselho: na minha opinião, é aconselhável definir maxRequestLength como o menor dos dois, pois você pode capturar uma exceção no evento Application_Error do seu Global.asax, caso seja excedido. Se você exceder maxAllowedContentLength primeiro, o IIS lidará com ele em vez do ASP.NET, tornando mais difícil lidar com o código.

joelmdev
fonte