title: The underlying connection was closed The server committed a protocol violation c#
body: <p>While executing the below code I am getting the following error</p>
  
  <blockquote>
    <p>(The underlying connection was closed The server committed a protocol
    violation )</p>
  </blockquote>
  
  <p>. Please help on this. I almost go throw every article about the error still not getting the solution.</p>
  
  <p>Thanks in Advance.</p>
  
  <pre><code>private static void Upload()
  {
       string sourceFile = System.IO.Path.Combine(filepath, filename);
       string ftpServerIP = "Hostname";
       string ftpUserID = "UserName";
       string ftpPassword = "Password";
  
       FileInfo fileInf = new FileInfo(sourceFile);
       string uri = "ftp://" + ftpServerIP + "/" + fileInf.Name;
       FtpWebRequest reqFTP;
       // Create FtpWebRequest object from the Uri provided
       reqFTP = (FtpWebRequest)FtpWebRequest.Create(new Uri("ftp://" + ftpServerIP + "/" + fileInf.Name));
       // Provide the WebPermission Credintials
       reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
       // By default KeepAlive is true, where the control connection is not closed
       // after a command is executed.
       reqFTP.KeepAlive = false;
       // Specify the command to be executed.
       reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
       // Specify the data transfer type.
       reqFTP.UseBinary = true;
       // Notify the server about the size of the uploaded file
       reqFTP.ContentLength = fileInf.Length;
       // The buffer size is set to 2kb
       int buffLength = 2048;
       byte[] buff = new byte[buffLength];
       int contentLen;
       // Opens a file stream (System.IO.FileStream) to read the file to be uploaded
       FileStream fs = fileInf.OpenRead();
       //try
       //{
            // Stream to which the file to be upload is written
            Stream strm = reqFTP.GetRequestStream();
            // Read from the file stream 2kb at a time
            contentLen = fs.Read(buff, 0, buffLength);
            // Until Stream content ends
            while (contentLen != 0)
            {
                // Write Content from the file stream to the FTP Upload Stream
                strm.Write(buff, 0, contentLen);
                contentLen = fs.Read(buff, 0, buffLength);
             }
             // Close the file stream and the Request Stream
             strm.Close();
             fs.Close();
        //}
        //catch (Exception ex)
        //{
        //    Console.Write(ex.Message, "Upload Error");
        //}
   }
  </code></pre>