Запрашиваю у FTP-сервера список файлов в определенной директории, но ответ приходит в формате html, т.е. теги html, head, body, а дальше список ссылок на файлы.
Здесь создаю запрос:
private FtpWebRequest CreateRequest(string uri, string method)
{
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(uri);
request.Credentials = new NetworkCredential(username, password);
request.Method = method;
request.UseBinary = true;
request.EnableSsl = false;
request.UsePassive = true;
if (useProxy)
{
request.Proxy = new WebProxy(proxyHost, proxyPort);
request.Proxy.Credentials = new NetworkCredential(proxyUsername, proxyPassword, proxyDomain);
}
return request;
}
А так запрашиваю список файлов:
List<string> lines = new List<string>();
FtpWebRequest request = CreateRequest(uri, WebRequestMethods.Ftp.ListDirectory);
using (var response = (FtpWebResponse)request.GetResponse())
{
using (var stream = response.GetResponseStream())
{
using (var reader = new StreamReader(stream, true))
{
while (!reader.EndOfStream)
{
lines.Add(reader.ReadLine());
}
}
}
}
В результате должен получить список файлов и папок. А получаю то, что указал выше. На каком-то иностранном сайте нашел ответ
Вероятно, ваш админ настроил HTTP-прокси в сети. Этот прокси будет разговаривать, используя FTP протокол FTP-сервер назначения. В FtpWebRequest клиент обращается к прокси по протоколу HTTP.
Итак, когда список каталогов возвращается из FTP-сервер, HTTP-прокси-сервер, что изменения в HTML и предлагает его клиенту.
Вы должны попросить у вашего admin если есть собственный FTP-прокси в сети, и использовать вместо другого.
Я проверил работу программы без ISA-сервера, напрямую. И получил то, что ожидал. А теперь вопросы:
1. Что можно сделать с FtpWebRequest, чтобы можно было ходить через прокси, но использовался протокол FTP?
2. (Или) Что можно сделать с ISA-сервером, чтобы он перестал оборачивать ответ FTP-сервера в html?