Синхронное чтение не поддерживается — для чтения входного потока сервера Blazor (Blazorise)C#

Место общения программистов C#
Ответить
Anonymous
 Синхронное чтение не поддерживается — для чтения входного потока сервера Blazor (Blazorise)

Сообщение Anonymous »

Обнаружена ошибка «Синхронное чтение не поддерживается» в inputStream.Read(buffer) для следующего кода:

Код: Выделить всё

public static void FileDecrypt(IFileEntry file, string newFileName, string key)
{
FileStream fsCrypt = new(fileName, FileMode.Create);
byte[] iv = new byte[16];
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = iv;

ICryptoTransform decryptor = aes.CreateDecryptor(aes.Key, aes.IV);
byte[] buffer = new byte[MAX_BYTES];
int read;

using Stream inputStream = file.OpenReadStream();
try
{
// ********* Fails on this READ with Unsupported ******
while ((read = inputStream.Read(buffer)) > 0)
{
byte[] result = decryptor.TransformFinalBlock(buffer, 0, read);
fsCrypt.Write(result, 0, read);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
Что вызывает недоумение, так это то, что inputStream.Read(buffer) РАБОТАЕТ для следующего кода:

Код: Выделить всё

public static void FileEncrypt(IFileEntry file, string newFileName, string key)
{
FileStream fsCrypt = new(fileName, FileMode.Create);
byte[] iv = new byte[16];
using (Aes aes = Aes.Create())
{
aes.Key = Encoding.UTF8.GetBytes(key);
aes.IV = iv;

ICryptoTransform encryptor = aes.CreateEncryptor(aes.Key, aes.IV);
// Write the results in 1 megabyte chunks
byte[] buffer = new byte[MAX_BYTES];
int read;

using CryptoStream cryptoStream = new CryptoStream((Stream)fsCrypt, encryptor, CryptoStreamMode.Write);
using Stream inputStream = file.OpenReadStream();
try
{
// WORKS here!
while ((read = inputStream.Read(buffer)) > 0)
{
cryptoStream.Write(buffer, 0, read);
}
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
}
}
Я уверен, что это что-то простое, но я этого не вижу. Я использую файл Blazorise IFileEntry, но я также попробовал конструкцию IBrowserFile из стандартной загрузки файла с тем же результатом. Пытаюсь буферизовать входные данные для расшифровки, потому что думаю, что размеры файлов могут стать большими.
Я также пробовал метод ReadAsync(), но он просто попадает в эту строку и никогда не возвращается.

Подробнее здесь: https://stackoverflow.com/questions/791 ... ead-blazor
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»