Как я могу заставить C # FtpWebRequest использовать прямой IP для доступа в Интернет вместо того, чтобы использовать HTTP-прокси?

1

(Связано с: список каталогов FTP, возвращаемый как HTML вместо простого вывода Linux ls)

Как заставить программу С# (FtpWebRequest) использовать прямой IP-адрес для доступа в Интернет, а не через HTTP-прокси? (Мои знания об ИТ-сетях и связанной с ними терминологии скудны. Извиняйтесь заранее.)

Чтобы выйти из внутренней сети компании, существует

  1. Косвенный путь через IP прокси-сервера (HTTP).
  2. Прямой IP-адрес интернет-сервиса (не прокси-сервера).

Я знаю это, потому что, используя FileZilla с/без прокси-сервера, установленного в Internet Explorer, затем на удаленном FTP-сервере журналы показывают IP-адрес прокси-сервера или прямой IP-адрес.

Код с использованием С# FtpWebRequest для подключения к FTP-серверу за пределами компании.

FtpWebRequest request = WebRequest.Create(uri) as FtpWebRequest;
request.Method = WebRequestMethods.Ftp.ListDirectory;
request.Credentials = server.Credential;
request.KeepAlive = true;
request.UsePassive = true;
request.EnableSsl = false;

//proxy options
//1. 
// do nothing

//2. 
request.Proxy = null;

//3. setup HTTP proxy
request.Proxy = new WebProxy(proxyuri, true);
request.Proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Proxy.Credentials = new NetworkCredential("Username", "Password");

Stream responseStream = response.GetResponseStream();
StreamReader reader = new StreamReader(responseStream);
while (!reader.EndOfStream)
       { ... }

Когда я устанавливаю прокси-сервер, программа С# (очевидно) использует прокси-сервер для доступа к FTP-серверу. Однако, поскольку это HTTP-прокси, список каталогов возвращается как HTML, а удаление, загрузка и создание каталогов невозможно. Программа должна удалять файлы, создавать папки на FTP.

Аналогично, если не устанавливать прокси-сервер, то программа использует настройки в Internet Explorer, где установлен прокси-сервер, который затем снова использует прокси-сервер HTTP.

В коде устанавливается прокси для null (request.Proxy = null ИЛИ WebRequest.DefaultWebProxy ИЛИ GlobalProxySelection.GetEmptyWebProxy() или new WebProxy();) вызывает исключение "Удаленный сервер возвратил ошибку: (550) Файл недоступен (например,, файл не найден, нет доступа). "

Эта проблема возникает только для одного конкретного внешнего FTP-сервера (на котором выполняется vsftpd). Я тестировал с использованием другого внешнего FTP и прокси-сервера, а также без прокси-сервера.

Вопросы 1. Кажется, программа С# может только прорываться с использованием прокси. Почему, когда прокси-сервер не установлен, программа не использует прямой IP-адрес? 2. Как заставить программу использовать прямой IP-адрес? 3. Может ли проблема возникнуть из-за FTP-сервера (vsftpd)?

  • 0
    Существует большая вероятность того, что вы не сможете подключиться напрямую. Прокси может выступать в качестве шлюза.
  • 0
    Но я могу сказать IE использовать прокси-сервер и просматривать веб-страницы И я могу сказать IE не использовать прокси-сервер и по-прежнему работать в Интернете.
Теги:
networking
proxy
ftp

1 ответ

1
Лучший ответ

Файл Windows (% systemroot%\system32\drivers\etc) имеет ошибочные записи. Я не совсем уверен, какая запись была проблемой, но файл теперь содержит только одну строку

127.0.0.1       localhost

Ещё вопросы

Сообщество Overcoder
Наверх
Меню