Механизм проверки, успешно ли загружен файл - PullRequest
0 голосов
/ 07 января 2019

Мне нужно проверить, успешно ли загружен файл. Мой результат действия возвращается CheckedFileStreamResult. Однако OnResultExecutedhandler выполняется даже до завершения загрузки файла.

Я использую следующее предложенное решение в моей программе:

public class CheckedFileStreamResult : FileStreamResult
    {
        public CheckedFileStreamResult(FileStream stream, string contentType): base(stream, contentType)
        {
            DownloadCompleted = false;
        }

        public bool DownloadCompleted { get; set; }

        protected override void WriteFile(HttpResponseBase response)
        {
            var outputStream = response.OutputStream;
            response.BufferOutput = false;
            using (FileStream fs = new FileStream("D:\\ABC.pdf", FileMode.Open, FileAccess.Read))
            {
                var buffer = new byte[_bufferSize];
                var count = fs.Read(buffer, 0, _bufferSize);
                while (count != 0 && response.IsClientConnected)
                {
                    outputStream.Write(buffer, 0, count);
                    response.Flush();
                    count = fs.Read(buffer, 0, _bufferSize);
                }
                DownloadCompleted = response.IsClientConnected;
            }
        }
        private const int _bufferSize = 0x200;
    }

Используя этот механизм, я не могу добиться желаемого эффекта. Обработчик OnResultExecuted выполняется до полной загрузки файла, а флаг DownloadCompleted создает ложное впечатление. Пожалуйста, объясните мне, как действовать.

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