A conexão subjacente foi fechada: Ocorreu um erro inesperado em um recebimento
-
22-08-2019 - |
Pergunta
Quando tento o meu programa em minha máquina Win2k8 ele funciona muito bem, mas no Win 2K3 dá-me este erro mensagem de erro
aqui está o código que' gerando o erro
WebClient wc = new WebClient();
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
lá é a parte estranha. se eu desativar o firewall no servidor completamente. o erro desaparece. mas ainda erros se eu adicionar o programa à lista de excepções e ativar o firewall.
tem pesquisar na web por dias, não conseguia encontrar qualquer solução.
Solução
Você deve tentar usar o modo passivo para FTP. A classe WebClient não permite isso, mas FtpWebRequest faz.
FtpWebRequest request = WebRequest.Create("ftp://ftp.website.com/sample.zip") as FtpWebRequest;
request.UsePassive = true;
FtpWebResponse response = request.GetResponse() as FtpWebResponse;
Stream ftpStream = response.GetResponse();
int bufferSize = 8192;
byte[] buffer = new byte[bufferSize];
using (FileStream fileStream = new FileStream("localfile.zip", FileMode.Create, FileAccess.Write))
{
int nBytes;
while((nBytes = ftpStream.Read(buffer, 0, bufferSize) > 0)
{
fileStream.Write(buffer, 0, nBytes);
}
}
Outras dicas
Por favor, poste a exceção completo, incluindo qualquer InnerException:
try
{
WebClient wc = new WebClient();
wc.DownloadFile("ftp://ftp.website.com/sample.zip");
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString()); // Or Debug.Trace, or whatever
throw; // As if the catch were not present
}
Eu tive um problema semelhante (sem ftp) e uma solução diferente
O ambiente de servidor de produção tinha sido feita de modo garantir que o servidor não poderia alcançar o URL.
Teste rápido é usar um navegador na caixa e ver se você pode navegar para o URL.
Espero que isso ajude alguém.