WinSCP IDisposable Wrapper I have written a simple wrapper for WinSCP in C#. I have written it to simplify SFTP connections I will needing to perform. 

public class WinSCPConn : IDisposable
{
        //private fields
        private SessionOptions sessionOptions;
        private TransferOptions transferOptions;
        private Session session;

        //public properties
        public bool IsSessionOpen { get { return session.Opened; } }

        public WinSCPConn(string hostname, string username, string password)
        {
            sessionOptions = new SessionOptions();
            sessionOptions.Protocol = Protocol.Sftp;
            sessionOptions.HostName = hostname;
            sessionOptions.PortNumber = 22;
            sessionOptions.Password = password;
            sessionOptions.UserName = username;
            sessionOptions.Timeout = new TimeSpan(0, 3, 0);
            sessionOptions.GiveUpSecurityAndAcceptAnySshHostKey = true;

            transferOptions = new TransferOptions();
            transferOptions.TransferMode = TransferMode.Binary;

            try
            {
                session = new Session();
                session.ExecutablePath = Properties.Settings.Default.WinSCPPath;
            }
            catch (SessionLocalException)
            {
                throw;
            } 

        }

        public void Open()
        {
            try
            {
                if (session.Opened == false)
                {
                    session.Open(sessionOptions);
                }
            }
            catch (SessionRemoteException)
            {
                throw;
            }
        }

        public TransferOperationResult SendFile(string SourceFile, string DestFile)
        {
            TransferOperationResult result;
            try
            {
                 result = session.PutFiles(SourceFile, DestFile, false, transferOptions);
                 return result;
            }
            catch (SessionRemoteException)
            {
                 throw;
            }  
        }

        public void CreateDirectory(string FolderPath)
        {
            try
            {
                if (!session.FileExists(FolderPath))
                {
                    session.CreateDirectory(FolderPath);
                }
            }
            catch (SessionRemoteException)
            {
                throw;
            }
        }

        public void Close()
        {
            if (session.Opened == true)
            {
                session.Dispose();
            }
        }

        public void Dispose()
        {
            Close();
        }
 }


It would be used as follows:

 using (WinSCPConn conn = new WinSCPConn("host", "username", "password"))
 {                       
      conn.Open();
      conn.CreateDirectory("/path/");
      conn.SendFile(@"C:\file.txt","/path/file.txt");
 }


My questions are as follows:


How is my exception handling?
Is there too much going on in the constructor?
a condition to be met like if (someBoolean == true) can be simplified to if (someBoolean). For reverse check use the Not operator ! like if (!someBoolean).  
Dipsose() should not only call Close() but also get rid of session, sessionOptions and transferOptions by calling Dispose() if they implement IDisposible or at least setting them to null.  
SendFile()  

you should declare the variable as near as possible to its usage and instead of catching .. rethrowing the exception, let it bubble up the tree. So it can be simplified to    

public TransferOperationResult SendFile(string SourceFile, string DestFile)
{
    return session.PutFiles(SourceFile, DestFile, false, transferOptions);
}

if comments don't add any value, like explaining why something is done (what is done should be explained by the code itself), they should be removed like  

//public properties