FtpWebRequest Подключение к AS / 400 - PullRequest
       16

FtpWebRequest Подключение к AS / 400

1 голос
/ 19 декабря 2009

Мне нужно скачать некоторые файлы через ftp со старого сервера AS / 400. Мой код выглядит примерно так:

FtpWebRequest _request = (FtpWebRequest)WebRequest.Create("ftp://ftpaddress/FOO.CSV");
_request.Credentials = new NetworkCredential(_ftpUsername, _ftpPassword);
_request.Method = WebRequestMethods.Ftp.DownloadFile;
FtpWebResponse response = (FtpWebResponse)_request.GetResponse();

Однако в сообщении выдается исключение:

501 Character (/) not allowed in object name.

Я предполагаю, что AS400 использует другой разделитель пути, чем /, но я не могу понять, как сформулировать uri таким образом (1) FtpWebRequest принимает и (2) AS400 понимает.

Кто-нибудь еще сталкивался с этим?

Ответы [ 4 ]

2 голосов
/ 21 декабря 2009

В прошлом я часто получал это сообщение, и это означало, что я забыл изменить формат имени.

При выполнении FTP с AS400 возможны два формата имен, которые можно изменить с помощью команды FTP NAMEFMT:

0 для системных файлов библиотеки (library \ filename.member)

1 для файлов в IFS, где CSV-файл будет

По умолчанию установлено значение 0.

Измените его на 1, и оно должно работать. Однако я не уверен, как это можно изменить с помощью FtpWebRequest.

2 голосов
/ 19 декабря 2009

Согласно этой странице , косая черта равна символу разделения пути:

Косая черта - это символ-разделитель для путей, отправляемых на FTP-сервер.

A аналогичная беседа на форумах Microsoft (эпоха 2005) указывает, что это ошибка в FtpWebRequest:

В настоящее время FtpWebRequest не поддерживает кавычки, и я не могу придумать, как вы сможете переопределить метод без предоставления нашего кода Мария Атанасова [NCL] MSFT, Модератор, ноябрь 2005

Попробуйте обновить до последних версий или попробуйте другую библиотеку; В ветке форума MS их несколько.

0 голосов
/ 19 июля 2017

Это совокупный ответ из ранее предоставленных, но я смог добиться этого, используя следующую структуру:

FTP: // [HostName] /% 2F / [каталог] / [подкаталог] / [имя файла] .csv

Требуется "% 2F", который служит разделителем между именем хоста и путем.

0 голосов
/ 30 декабря 2009

Чтобы сделать жизнь немного проще, FTP-сервер решает, какой NameFormat вы хотите использовать, основываясь на вашей первой команде. Если вы начнете с «cd / home», то FTP-сервер автоматически установит для вас значение NAMEFMT 1.

Действительно, вы можете изменить это вручную во время сеанса с помощью удаленной команды FTP NAMEFMT. Обратите внимание, что вам не нужен (старый) способ iSeries. Вы можете обращаться к КАЖДОМУ объекту на iSeries с помощью NAMEFMT 1. Например, «get /QSYS.LIB/MYLIBRARY.LIB/MYFILE.FILE/MYMEMBER.MBR» поможет выполнить любую таблицу базы данных iSeries. Даже для многомерных файлов!

...