2012-09-08 5 views
1
에 의해

을 큰 파일을 업로드하고 서버 (300 ~ MB)에 파일을 업로드하려고에 대한 예외,하지만 난 파일의 거의 100 메가 바이트 옮겼다 된 오류 다음 얻을 :내가 FTP 클라이언트를 만들고있어 FTP

The underlying connection was closed: An unexpected error occurred on a receive. 

여기 내 코드입니다 : 내가 사용하려고

private void UploadFile(string filepath, string filename) 
    { 
     try 
     { 
      FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create("ftp://" + server + "/" + filename); 

      //ftp.KeepAlive = false; 
      //ftp.Timeout = 1000000; 
      //ftp.UsePassive = true; 
      //ftp.ReadWriteTimeout = 100000; 

      Path.GetFileName(filepath); 
      ftp.Credentials = new NetworkCredential(username, password); 
      ftp.Method = WebRequestMethods.Ftp.UploadFile; 


      FileStream stream = File.OpenRead(filepath); 
      byte[] buffer = new byte[stream.Length]; 
      stream.Read(buffer, 0, buffer.Length); 
      stream.Close(); 


      Stream requestStream = ftp.GetRequestStream(); 
      //requestStream.ReadTimeout = 1000000; 
      //requestStream.WriteTimeout = 1000000; 
      requestStream.Write(buffer, 0, buffer.Length); 
      requestStream.Close();   

      FtpWebResponse response = (FtpWebResponse)ftp.GetResponse(); 
      response.Close(); 
     } 
     catch (Exception ex) { CreateRunLogFile(ex.Message); } 

     CreateRunLogFile("Uploading of file " + filepath + " ended."); 
    } 

,

ftp.KeepAlive = false; 
ftp.Timeout = 1000000; 
ftp.UsePassive = true; 

그러나 그것은 도움이되지 않았다.

+1

파일이 전송되고 있습니까? 이것은 실제로 아무 것도 잘못된 컨트롤 채널의 타임 아웃 일 수 있습니다. 또한 FTP 클라이언트 (예 : FileZilla)를 사용하여 동일한 파일을 업로드하려고 시도 했습니까? 어떤 행동이 보이나요? – JamieMeyer

+0

@JamieMeyer 아니요, 프로그램이 Exeption 파일 전송이 끝날 때 종료합니다. 제어 채널과 관련하여 이해가 안됩니다. FileZilla 및 WinSCP로 업로드하려고했으나 파일이 성공적으로로드되었습니다. 한 번 더, 업로드 한 지 100 초가 지나면 예외가 발생했습니다. – vasa911

+0

설정 한 시간 초과 값은 밀리 초 단위이며, 이는 진행 상황을 설명합니다. 또한 문서화 된 기본값과는 달리 기본값이기도합니다. -1로 설정하고 다시 시도하십시오. 이 도움이 될 수 있습니다 : http://www.sidesofmarch.com/index.php/archive/2012/04/06/damn-the-documentation-ftpwebrequest-timeout-default-value-is-not-infinite/ – JamieMeyer

답변

1

대상 방화벽 설정을 확인하십시오. vsFTPd를 실행하는 LINUX 서버 인 경우 서버 ftp 서비스에는 구성 파일에 FILESIZE 및 TIMEOUT 설정이 있습니다.

FILESIZE 및 TIMEOUT 설정을 조정 한 후에 vsFTPd 서비스를 다시 시작하십시오.

관련 문제