Как добавить CRC32 ha sh к данным, возвращаемым как ByteRangeStreamContent? - PullRequest
0 голосов
/ 25 мая 2020

Я получаю запрос на получение содержимого файла из WebApi.

Запрос также может содержать заголовок range, поэтому для этого я использую ByteRangeStreamContent для генерации содержимого, а затем, наконец, отправляю это содержимое как HttpResponse.

Это код, который я использую

var contentType = new MediaTypeHeaderValue("application/octet-stream");
var bytes = fileProvider.GetFile(fileId);
var stream = new MemoryStream(bytes);

if (Request.Headers.Range != null)
{
     var content = new ByteRangeStreamContent(stream, Request.Headers.Range, contentType);
     return ByteArrayHttpResponseMessage(content);
}
else
{
     var content = new ByteArrayContent(stream.ToArray());
     return ByteArrayHttpResponseMessage(content);
}

Мне нужно добавить проверку CRC32 с данными сейчас.

Это я легко могу сделать, когда заголовок диапазона не отправляется, потому что тогда у меня есть доступ к массиву байтов, который я могу использовать для вычисления и добавления CRC32.

Проблема возникает при отправке переменной диапазона, потому что тогда у меня нет доступа к фактическим данным в виде байтового массива, который отправляется, у меня есть только ByteRangeStreamContent, поэтому я не могу обновить его с помощью CRC32 перед отправкой.

Я проверил, что у него есть метод ReadAsByteArrayAsync(), но я не знаю если это правильный способ извлечь массив из ByteRangeStreamContent, тогда добавьте CRC32 в массив, затем снова попробуйте сгенерировать обновленный объект ByteRangeStreamContent.

Есть ли способ сделать это?

...