Downloading File gives an error The process cannot access th
I am using Winscp to download csv file from the SFTP server. This is my code
I am using MVC so i have two controllers that are accessing this class and when i run the controller one at a time then it works fine but when i run both controllers together then i get this error in one of the controller
I am getting this error after this line
if i change the name of the file here
It works fine and save the file with random file name but i want to pass my FileName. How to solve this?
if (!File.Exists(FlagFilePath)) { Debug.WriteLine("Trying to download sales data file "); SessionOptions sessionOptions = new SessionOptions { Protocol = Protocol.Sftp, HostName = ConfigurationManager.AppSettings["SFTPDomain"], UserName = ConfigurationManager.AppSettings["SFTPUser"], Password = ConfigurationManager.AppSettings["SFTPPass"], PortNumber = Convert.ToInt32(ConfigurationManager.AppSettings["SFTPPortNumber"]), GiveUpSecurityAndAcceptAnySshHostKey = true, }; using (Session session = new Session()) { //Attempts to connect to your SFtp site session.Open(sessionOptions); //Get SFtp File TransferOptions transferOptions = new TransferOptions(); transferOptions.TransferMode = TransferMode.Binary; //The Transfer Mode - Automatic, Binary, or Ascii transferOptions.FilePermissions = null; //Permissions applied to remote files; transferOptions.PreserveTimestamp = false; //Set last write time of destination file //to that of source file - basically change the timestamp to match destination and source files. transferOptions.ResumeSupport.State = TransferResumeSupportState.Off; //SFTP File Path Sftp_RemotePath = ConfigurationManager.AppSettings["SFTPFileName"].ToString(); //Delete File if Exist if (System.IO.File.Exists(FilePath)) { System.IO.File.Delete(FilePath); } //the parameter list is: remote Path, Local Path with filename TransferOperationResult transferOperationResult = session.GetFiles(Sftp_RemotePath, FilePath , false, transferOptions); //Throw on any error transferOperationResult.Check(); Debug.WriteLine("Downloaded fresh sales data file!"); } }
I am using MVC so i have two controllers that are accessing this class and when i run the controller one at a time then it works fine but when i run both controllers together then i get this error in one of the controller
{WinSCP.SessionRemoteException: Can't create file 'D:\TESTING\SFTP\Data.csv'. ---> WinSCP.SessionRemoteException: System Error. Code: 32. The process cannot access the file because it is being used by another process --- End of inner exception stack trace --- at WinSCP.OperationResultBase.Check() at JetStarAPI.Models.SFTPClient.DownloadFile(String FilePath) in D:\TESTING\SFTP\Models\SFTPClient.cs:line 65}
I am getting this error after this line
transferOperationResult.Check();
if i change the name of the file here
TransferOperationResult transferOperationResult = session.GetFiles(Sftp_RemotePath, FilePath+Path.GetRandomFileName() , false, transferOptions);
It works fine and save the file with random file name but i want to pass my FileName. How to solve this?