Here is a solution what helped for me
try
{
FTPOperations.ListDirectory(model.configData.FTPInputFolder, model.configData.FTPLogin, model.configData.FTPPassword);
}
catch (WebException e)
{
FtpWebResponse response = (FtpWebResponse)e.Response;
if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable)
{
ModelState.AddModelError("configData.FTPInputFolder", "Directory does not exists");
}
else
{
ModelState.AddModelError("configData.FTPInputFolder", "Directory check error: " + e.Message);
}
}
And method
public static List<string> ListDirectory(string dirPath, string ftpUser, string ftpPassword)
{
List<string> res = new List<string>();
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(dirPath);
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = new NetworkCredential(ftpUser, ftpPassword);
request.KeepAlive = false;
FtpWebResponse response = (FtpWebResponse)request.GetResponse();
Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
while (!reader.EndOfStream)
{
res.Add(reader.ReadLine());
}
reader.Close();
response.Close();
return res;
}
I'm not sure why it does not work before and if somebody shows this it will be very appreciated :)
Now this code works without login issues and also do not hang. Maybe it works now because we read resonce what we did not do before and close responce (without reading it hanged in past)