C # Ftp файл Загрузить Async |Синхронизация - PullRequest
0 голосов
/ 13 октября 2018

У меня есть веб-API asp.net, который загружает некоторые конкретные документы от конечных пользователей в расположение файла FTP на сервере.веб-сайт общедоступен и будет иметь много одновременных пользователей, поэтому можно вызывать много загрузок.

Я хочу сообщить пользователю, что загрузка прошла успешно или не удалась.

Я использую следующий коддля загрузки

            FtpWebRequest clsRequest = (FtpWebRequest)System.Net.WebRequest.Create(fileName);
            clsRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
            clsRequest.Method = Ftp.UploadFile;
            using (System.IO.Stream clsStream = clsRequest.GetRequestStream())
            {
                clsStream.Write(bytes, 0, bytes.Length);
                clsStream.Close();
                clsStream.Dispose();
            }

код выполняется, но я боюсь, что производительность и стабильность при работе с параллельными пользователями Каков наилучший путь от производительности, стабильности и работоспособности сервера с одновременными пользователями и с успешным возвратом / неудачей для каждогоuser

Нужно ли вместо этого использовать асинхронные вызовы и как изменить код?

Спасибо

1 Ответ

0 голосов
/ 15 октября 2018

Вот асинхронная версия вашего кода:

FtpWebRequest clsRequest = (FtpWebRequest)System.Net.WebRequest.Create(fileName);
clsRequest.Credentials = new NetworkCredential(ftpUsername, ftpPassword);
clsRequest.Method = Ftp.UploadFile;
using (System.IO.Stream clsStream = await clsRequest.GetRequestStreamAsync())
{
    await clsStream.WriteAsync(bytes, 0, bytes.Length);
    // These lines not required since they are located inside using statement.
    //clsStream.Close();
    //clsStream.Dispose();
}

Помните, что ваш метод должен быть помечен ключевым словом async и возвращает задачу, если это пустой метод.Кроме того, я должен отметить, что это код на стороне клиента.Асинхронность не влияет на производительность на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...