Краткое описание
Я пишу приложение, используя
- . NET Framework 4.7.2
- Работает на Azure Cloud Server
- 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);
}
}