Я уже некоторое время пытаюсь установить соединение ftp с нашим мэйнфреймом через c #. До сих пор я был в состоянии подключиться и загрузить файл на мэйнфрейм, и это здорово, но файл имеет неправильную длину записи и настроен как переменная, а не фиксированная длина записи. После небольшого исследования я пришел к тому же выводу, что и большинство людей, что функция ftpwebresponse не позволяет командам «qoute SITE» отправляться на мэйнфрейм. Если я ошибаюсь, пожалуйста, не стесняйтесь меня поправлять, вот код, который я использую:
private void ftpButton_Click(object sender, EventArgs e)
{
string ftphost = "ftpSite";
string user = "myUser";
string pwd= "myPass";
string ftpfileName = "test.file2";
string inputfilePath="d:\\documents and settings\\gheff\\My Documents\\Visual Studio 2005\\Projects\\biWeeklyJob\\BiWeekly\\bin\\Debug\\file2.TXT";
string ftpfullpath = String.Format("ftp://{0}//'{1}'", ftphost,ftpfileName);
try
{
FtpWebRequest ftp = (FtpWebRequest)FtpWebRequest.Create(ftpfullpath);
ftp.Credentials = new NetworkCredential(user,pwd);
ftp.KeepAlive = true;
ftp.UseBinary = false; //Use ascii.
ftp.Method = WebRequestMethods.Ftp.UploadFile;
FileStream fs = File.OpenRead(inputfilePath);
byte[] buffer = new byte[fs.Length];
fs.Read(buffer, 0, buffer.Length);
fs.Close();
Stream ftpstream = ftp.GetRequestStream();
ftpstream.Write(buffer, 0, buffer.Length);
ftpstream.Close();
}
catch (WebException ex)
{
String status = ((FtpWebResponse)ex.Response).StatusDescription;
throw new Exception(status);
}
}
Итак, я не задумывался над другим подходом: я успешно использовал командную строку для загрузки файла, изменения свойств файла, а также изменил тип файла, чтобы я мог отправлять задания JCL на мэйнфрейм. Сейчас я пытаюсь реализовать это в моем существующем приложении на c #, но это оказалось сложнее, чем я думал.
Я ни в коем случае не эксперт в c #, но могу использовать ответы, чтобы потом пойти и провести дополнительные исследования, чтобы лучше понять.
Я видел этот фрагмент кода C # cmd excute команды , но, оглядываясь вокруг, кажется, что из этого может быть выдана только одна команда.
Итак, мой вопрос: я знаю, что это заняло какое-то время, возможно ли выполнить следующие команды в командной строке без использования командного файла, так как я просматриваю некоторую обратную связь по мере выполнения процесса?
open "cmd.exe"
type "ftp"
type "FTPserver"
Type "USERNAME"
type "PASSWORD"
Затем, как только соединение будет установлено
затем выполните предопределенные команды, т.е. загрузите файлы, загрузите и запустите задания JCL.
Я думаю, что я ищу что-то, что напишет текст в cmd.exe, но продолжит сеанс?
Надеюсь, это имеет смысл.
Любая помощь будет принята с благодарностью.
Спасибо