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.