C# – Simple FTP Service

Here is a quick snippet for FTP services using standard C#/.NET libraries.

The task is to download a file from a remote FTP server using standard C#/.NET libraries.

I assume that you have the FTP server details (Host, Username, Password).

The code is pretty straight forward, I have given comments where required.

/* FTPService.cs */
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace MyProject
    public class FTPService
        //request object
        private FtpWebRequest ftpRequest = null;
        //response object
        private FtpWebResponse ftpResponse = null;
        //stream object to read
        private Stream ftpStream = null;
        //Host address like ftp://something.net/
        public string Host { get; set; }
        //ftp username
        public string Username { get; set; }
        //ftp password
        public string Password { get; set; }
        //local directory where the file will be downloaded.
        public string LocaDirectory { get; set; }


        public void GetFile(string fileName)
		//create FTP request
                ftpRequest = (FtpWebRequest)FtpWebRequest.Create(String.Format("{0}/{1}", Host, fileName));
		//add authentication details                
                ftpRequest.Credentials = new NetworkCredential(Username, Password);
                //set ftp options
                ftpRequest.UseBinary = true;
                ftpRequest.UsePassive = true;
                ftpRequest.KeepAlive = true;
                ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile;

                // Get response from ftp server
                ftpResponse = (FtpWebResponse)ftpRequest.GetResponse();
                ftpStream = ftpResponse.GetResponseStream();
                StreamReader reader = new StreamReader(ftpStream);
                //download the file and copy it to local directory
                using (var file = File.Create(LocaDirectory + fileName))

            catch (Exception ex)

                ftpRequest = null;



Then you can call this service in your project using the following snippet

        private static void DownlaodFTPFile()
            FTPService service = new FTPService();

            service.Host = ConfigurationManager.AppSettings["Host"];
            service.Username = ConfigurationManager.AppSettings["Username"];
            service.Password = ConfigurationManager.AppSettings["Password"];
            service.LocaDirectory = ConfigurationManager.AppSettings["LocalDirectory"];

            string fileName = "DownloadFile.txt";


Always best practise to use web.config/app.config for hard-coded details, it takes time but it in long run it eventually pays off