Список брандмауэров и каталогов FTP в C # - PullRequest
0 голосов
/ 14 июля 2011

Я пытаюсь получить список каталогов FTP-сайта, но возникают проблемы с подключением и получением списка. Я считаю, что проблема с брандмауэром Windows для Windows 2008 Server R2. Вот код:

        try
        {
            // Get the object used to communicate with the server.
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://127.0.0.1");
            request.Method = WebRequestMethods.Ftp.ListDirectoryDetails;

            request.UsePassive = false;

            // This example assumes the FTP site uses anonymous logon.
            request.Credentials = new NetworkCredential("user", "pass");
            request.Proxy = HttpWebRequest.DefaultWebProxy;
            FtpWebResponse response = (FtpWebResponse)request.GetResponse();

            Stream responseStream = response.GetResponseStream();
            StreamReader reader = new StreamReader(responseStream);

            Label1.Text = reader.ReadToEnd();

            reader.Close();
            response.Close();
        }
        catch (Exception ex)
        {
            Label1.Text = ex.Message;
        }

Мне интересно, какие настройки брандмауэра или порты необходимо открыть, чтобы это действие произошло. Я включил весь входящий / исходящий трафик через порты 21 и 20, и это не сработало, поэтому я разрешил весь входящий / исходящий трафик для всех портов, и это сработало. Однако открытие каждого порта таким способом не является жизнеспособным решением:)

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Я наконец понял это.Вам необходимо создать собственное правило входящего трафика в брандмауэре Windows вокруг процесса w3p.Вот пошаговое руководство.

Создание нового правила во входящем трафике Выберите Пользовательский

Выберите «Путь к этой программе»

Найдите службу w3wp.exe (обычно в Windows \ System32папка)

Нажмите Настроить

Выберите «Применить только к услугам»

Измените тип протокола на TCP

Установите для локальных и удаленных портов значение «Все порты»”(Вы можете попытаться сузить его до только порта 21, но это не всегда работает, особенно при асинхронной загрузке)

Выберите любой IP-адрес для локальных IP-адресов (или диапазон, если вы знаете локальныйДиапазон IP-адресов)

Выберите «Эти IP-адреса» для удаленных IP-адресов и нажмите «Добавить».Введите IP-адрес FTP-сайта, который вы также будете загружать

Нажмите OK, как только вы добавите IP-адрес FTP, затем нажмите Далее

Выберите Разрешить подключение

Применитьправило для домена, частного и общедоступного

Имя: «Разрешить входящий трафик TCP w3wp.exe с порта 21»

Нажмите «Готово»

0 голосов
/ 14 июля 2011

Я не думаю, что это действительно подходит для StackOverflow, потому что этот вопрос больше относится к конфигурации безопасности для Windows Server 2008 R2.Но, в свете, я протестировал ваш код, и он отлично работает, поэтому вам нужно сделать исключение брандмауэра Windows для доступа по FTP на сервере для необходимых портов FTP.В противном случае брандмауэр Windows действительно заблокирует ваши входящие соединения от вашего клиента.Если открытие исключения брандмауэра не устранило проблему, вам следует изучить другие проблемы конфигурации безопасности на вашем сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...