PROBLEMA: Não é possível enviar ficheiros de grandes dimensões quando utiliza o controlo do servidor HtmlInputFile

Traduções de Artigos Traduções de Artigos
Artigo: 295626 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Sintomas

Quando tenta utilizar o controlo HtmlInputFile para enviar um ficheiro grande, o ficheiro não pode ser enviado.

Causa

Este problema ocorre porque o valor predefinido para o parâmetro maxRequestLength no <httpruntime> secção do ficheiro Machine.config é 4096 (4 megabytes). Como resultado, os ficheiros maiores do que este valor não são enviados por predefinição.

Resolução

Para resolver este problema, utilize um dos seguintes métodos:
  • No ficheiro Machine.config, altere o atributo maxRequestLength do <httpruntime> secção de configuração para um valor maior. Esta alteração afecta todo o computador.
  • No ficheiro Web.config, substitui o valor de maxRequestLength para a aplicação. Por exemplo, a seguinte entrada na Web.config permite ficheiros menor ou igual a 8 megabytes (MB) para ser enviado:
    <httpRuntime maxRequestLength="8192" />
    					

Mais Informação

Por predefinição, este valor é limitado a 4 MB para restringir a possíveis ataques denial-of-Service.

Quando o atributo maxRequestLength está definido no ficheiro Machine.config e, em seguida, um pedido é registado (por exemplo, um envio de ficheiros) que excede o valor de maxRequestLength , uma página de erro personalizadas não pode ser apresentada. Em vez disso, o Microsoft Internet Explorer apresentará uma mensagem de erro "Não é possível localizar o servidor ou de DNS".

Teoricamente, o tamanho de transferência máximo do ficheiro é bastante grande. No entanto, devido a monitorização da integridade ASP.NET, não é possível carregar ficheiros muito grandes no ASP.NET. O Processo de trabalho do ASP.NET tem um espaço de endereço virtual de 2 gigabytes (GB). No entanto, o processo de trabalho do ASP.NET utiliza apenas um pouco mais do que 1 GB devido a fragmentação de monitorização e memória saúde.

Durante o processo de envio, o ASP.NET carrega todo o ficheiro na memória antes do utilizador pode guardar o ficheiro no disco. Assim, o processo pode reciclar devido o atributo memoryLimit do código processModel no ficheiro Machine.config. O atributo memoryLimit Especifica a percentagem de memória física que o processo de trabalho do ASP.NET pode exaustão antes do processo é reciclado automaticamente. Reciclagem impede que fugas de memória fazendo com que o ASP.NET para falhar ou para deixar de responder.

Além disso, outros factores desempenham um papel no tamanho máximo do ficheiro que pode ser carregado. Estes factores incluem memória disponível, espaço em disco disponível, velocidade do processador e tráfego de rede actual. Com tráfego normal dos ficheiros que está a ser enviados, a Microsoft recomenda que utilize um tamanho máximo do ficheiro no intervalo de 10 a 20 megabytes (MB). Se raramente enviar ficheiros, o tamanho máximo do ficheiro pode ser 100 MB.

Nota Pode transferir ficheiros maiores do que 100 MB no ASP.NET. No entanto, a Microsoft recomenda que siga os tamanhos de envio de máximo do ficheiro mencionadas neste artigo. Para determinar mais precisos tamanhos de ficheiro, execute stress testar nos computadores que são semelhantes aos que serão utilizados na produção.

Poderá detectar as seguintes mensagens de erro se tiver limites de tamanho do ficheiro durante o processo de envio de ficheiros:
  • Não é possível apresentar a página.
  • Aplicação de servidor está indisponível
    No registo de eventos, a mensagem de erro será semelhante à seguinte:

    aspnet_wp.exe (PID: PIDNumber) foi reciclado porque excedia de consumo de memória SizeLimit MB (Percentage por cento da memória RAM disponível).

  • Tipo de excepção System.OutOfMemoryException accionado.
Também poderá encontrar transferências ocorrem muito lentamente. Se observar o processo Aspnet_wp.exe no Gestor de tarefas do Windows, notará que delta memória altera ao 64 KB a intervalos de 1 a 2 segundos. Dependendo do tamanho do ficheiro, este atraso poderá fazer com que o processo de trabalho do ASP.NET reciclar devido a um erro responseDeadlock.

Propriedades

Artigo: 295626 - Última revisão: 26 de outubro de 2007 - Revisão: 6.5
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
Palavras-chave: 
kbmt kbproductlink kbconfig kbprb kbservercontrols KB295626 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 295626

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com