Вот способ, который немного чище, использует меньше потоков и правильно закрывает их по завершении.
Uri requestUri = new Uri(string.Concat("bbbbb", "bbbbbb", "bbb/", hj, "/", hjj, ".txt"));
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(requestUri);
request.Credentials = new NetworkCredential("bbbbb", "bbbbbb");
request.Method = WebRequestMethods.Ftp.UploadFile;
request.UsePassive = true;
byte[] fileContents = File.ReadAllBytes(@"oo.txt");
request.ContentLength = fileContents.Length;
using (Stream requestStream = request.GetRequestStream())
{
requestStream.Write(fileContents, 0, fileContents.Length);
}
WebRequest.Abort
предназначен для завершения асинхронных операций, которых у вас нет.Не называй это здесь.Пожалуйста, изучите заявление using
, которое я включил, как это было предложено в комментариях Митча Уитта.Он автоматически удалит объект потока.
Что касается других вопросов, конечно, кто-то может использовать те же учетные данные для входа на FTP-сервер, но не в результате вашего кода.Те же учетные данные всегда будут входить в систему успешно.Я думаю, вы беспокоитесь о том, чтобы оставить соединение активным, но это проблема для сервера.