Nome do post meio estranho, mas vamos lá!
Esses dias, fazendo um uploadzinho maroto, o cliente precisou enviar um arquivo "grande" só que na hospedagem dele, mesmo adicionando os parâmetros de configuração no web.config como executionTimeout, maxRequestLength, maxAllowedContentLength, etc, continuava o erro. Dando uma vasculhada na net algumas pessoas resolveram colocando o KeepAlive como false mas eu estava usando o WebClient que não tem o atributo e não queria reprogramar o que já havia feito. Eis que encontro uma solução que caiu como uma luva mesmo não usando o atributo.
Adicione ao projeto a classe ExtendedWebClient conforme o código abaixo:
public class ExtendedWebClient : WebClient
{
public int Timeout { get; set; }
public new bool AllowWriteStreamBuffering { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
var request = base.GetWebRequest(address);
if (request != null)
{
request.Timeout = Timeout;
var httpRequest = request as HttpWebRequest;
if (httpRequest != null)
{
httpRequest.AllowWriteStreamBuffering = AllowWriteStreamBuffering;
}
}
return request;
}
public ExtendedWebClient()
{
Timeout = 100000;
}
}
Então, agora é apenas substituir o WebClient por ExtendedWebClient ficando assim:
ExtendedWebClient ftp = new ExtendedWebClient();
ftp.Timeout = Timeout.Infinite;
ftp.AllowWriteStreamBuffering = false;
E o resto segue!
Pode utilizar o KeepAlive? Pode! Basta fazer da mesma forma que o AllowWriteStreamBuffering.
0 comentários:
Postar um comentário