Ваша проблема здесь:
length = iStream.Read(buffer, 0, 10000);
// Write the data to the current output stream.
context.HttpContext.Response.OutputStream.Write(buffer, 0, length);
Каждый цикл, который вы читаете в буфер ровно 10000 байт и записывает его в поток.Это означает, что каждый загружаемый файл будет кратен 10000.Таким образом, если бы я должен был загрузить файл размером 9 998 байт с вашего сайта, полученный файл был бы 10 000 байт.Это означает, что хеш никогда не совпадет.Мой файл будет иметь 2 нулевых байта в конце.
Вам нужно добавить проверку, чтобы убедиться, что объем данных для чтения>> 10 Кб, а если нет, измените размер своего байта доточное количество, которое осталось, и передать это.это должно исправить несоответствие хеша
попробуйте что-то вроде этого:
if (context.HttpContext.Response.IsClientConnected)
{
// Read the data in buffer.
if (dataToRead>=10000)
{
byte[] buffer = new byte[10000];
length = 10000
context.HttpContext.Response.OutputStream.Write(buffer, 0, length);
}
else
{
byte[] buffer = new byte[dataToRead];
length = buffer.Length;
context.HttpContext.Response.OutputStream.Write(buffer, 0, length);
}
// Flush the data to the HTML output.
context.HttpContext.Response.Flush();
dataToRead = dataToRead - length;
}