Что вызывает тайм-аут в GetResponse()
Я пытаюсь получить доступ к FTP-серверу через консольное приложение, написанное на C#. У моего приложения есть тайм-аут в FtpWebRequest.GetResponse()
- первая строка внутри try/catch.
Я могу получить доступ к FTP-серверу через Filezilla с помощью учетных данных и предоставленного мне порта uri +.
- Я дважды проверил свои учетные данные у сетевого администратора.
- Я попытался запустить мой код с указанием порта в URI и без него.
- Я попытался настроить
FtpWebRequest.Timeout
значение. - Я пытался использовать
FtpWebRequest.ListDirectory
,FtpWebRequest.ListDirectoryDetails
, а такжеFtpWebRequest.DownloadFile
, Я пробовал с и без
FtpWebRequest.UsePassive = false
,class Program { static void Main(string[] args) { //Uri uri = new Uri(@"ftp://1.2.3.4:990/directory/file.csv"); Uri uri = new Uri(@"ftp://1.2.3.4:990/directory"); FtpWebRequest ftpRequest = (FtpWebRequest)WebRequest.Create(uri); ftpRequest.Credentials = new NetworkCredential("username", "password"); //ftpRequest.Method = WebRequestMethods.Ftp.DownloadFile; //ftpRequest.Method = WebRequestMethods.Ftp.ListDirectory ftpRequest.Method = WebRequestMethods.Ftp.ListDirectoryDetails; //ftpRequest.UsePassive = false; ftpRequest.Timeout = Convert.ToInt32(0.5d * 60 * 1000); try { FtpWebResponse response = (FtpWebResponse)ftpRequest.GetResponse(); StreamReader streamReader = new StreamReader(response.GetResponseStream()); List<string> directories = new List<string>(); string line = streamReader.ReadLine(); while (!string.IsNullOrEmpty(line)) { directories.Add(line); line = streamReader.ReadLine(); } } catch (WebException we) { Console.WriteLine("Message:\r\n\t{0}\r\n", we.Message); Console.WriteLine("Response:\r\n\t{0}\r\n", we.Response); Console.WriteLine("Response code:\r\n\t{0}\r\n", ((FtpWebResponse)we.Response).StatusCode); Console.WriteLine("Response StatusDescription:\r\n\t{0}\r\n", ((FtpWebResponse)we.Response).StatusDescription); Console.WriteLine("Stacktrace:\r\n\t{0}\r\n", we.StackTrace); } catch (Exception e) { Console.WriteLine("Exception.ToString:\r\n\t{0}", e.ToString()); } finally { Console.ReadLine(); } } }
Каждый раз, когда я запускаю этот код, я получаю следующий вывод.
Сообщение:
Время операции истекло.
Отклик:
System.Net.FtpWebResponse
Код ответа:
Неопределенный
Статус ответаОписание:
Трассировки стека:
в Syste.NetFtpWebRequest.GetResponse() в ConsoleApplication1.Program.Main(String[] args) в c:\Visual Studio 2013\Projects\ConsoleApplication1\ConsoleApplication1\Program.cs:line27