UploadFromStreamAsyn c иногда хранит файл 0 байт - PullRequest
0 голосов
/ 17 апреля 2020

Краткое описание

Я пишу приложение, используя

  1. . NET Framework 4.7.2
  2. Работает на Azure Cloud Server
  3. Azure Облачное хранилище (общие файлы)

Ожидается, что это приложение будет обрабатывать 20 тыс. Одновременных пользователей (наихудший случай)

Проблема

Я пытаюсь сохранить загруженный файл пользователя в моем Azure облачном хранилище, используя приведенный ниже код. Но иногда в производственной среде сохраненные файлы остаются пустыми с размером 0B. Мы также получаем некоторые отзывы от наших пользователей о том, что их загруженные файлы повреждены при загрузке своих файлов. Я проверил ApplicationInsights и не обнаружил ошибок в процессе.

Мне никогда не удавалось воспроизвести дело. Это также классифицируется как редкий случай, потому что, когда я проверил на Azure Cloud Storage, было около 175 файлов из 87k ++ файлов, которые повреждены.

Код

public async Task<AzureUploadReturn> UploadFile(HttpPostedFileBase File, string Directory, string filename)
{
    try
    {
        //Connect to Azure
        CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
        // Create a reference to the file client.
        CloudFileClient fileClient = storageAccount.CreateCloudFileClient();

        // Get a reference to the file share we created previously.
        CloudFileShare share = fileClient.GetShareReference(shareName);
        CloudFileDirectory rootDir = share.GetRootDirectoryReference();
        CloudFileDirectory sampleDir = rootDir.GetDirectoryReference(Directory);
        CloudFile cloudFile = sampleDir.GetFileReference(filename);

        await cloudFile.UploadFromStreamAsync(File.InputStream);
        File.InputStream.Dispose();

        return AzureUploadReturn.Success();
    }
    catch (Exception ex)
    {
        return AzureUploadReturn.Failed(ex.Message);
    }
}
...