Ядро ASP.NET Core удаляет изображение из azure & from database

90
10

У меня есть приложение ASP.NET, которое успешно загружает изображения в лазурный контейнер. Я пытаюсь создать функцию, которая удаляет определенное изображение в блобе и удаляет изображение из базы данных. Удаление его из базы данных не сложно, но попытка удалить его из azure вызывает исключение. Я прочесал сеть для ответа, но ничего! Что-нибудь помогает! Ниже приведен код:

Исключение ошибки

An unhandled exception occurred while processing the request.
ArgumentNullException: Value cannot be null.
Parameter name: connectionString
Microsoft.WindowsAzure.Storage.CloudStorageAccount.Parse(string connectionString)

InterfaceService.cs

 public CloudBlobContainer GetBlobContainer(string azureCString, string containerName)
{
var account = CloudStorageAccount.Parse(AzureCString);
var blobClient = account.CreateCloudBlobClient();
return blobClient.GetContainerReference(containerName);
}

Products.cs

 public async Task<IActionResult> Delete(int? id)
{
if (id == null)
{
return NotFound();
}

var product = await _context.Product
.SingleOrDefaultAsync(m => m.Id == id);
if (product == null)
{
return NotFound();
}

return View(product);
}

[HttpPost, ActionName("Delete")]
public async Task<IActionResult> DeleteConfirmed(int id, IFormFile file)
{
var product = await _context.Product.SingleOrDefaultAsync(m => m.Id == id);
var container = _interfaceService.GetBlobContainer(AzureCString, "azureCstring");
var content = ContentDispositionHeaderValue.Parse(file.ContentDisposition);
var fileName = content.FileName.Trim('"');
var blob = container.GetBlockBlobReference(fileName);
await blob.DeleteIfExistsAsync();

_context.Product.Remove(product);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}

спросил(а) 2021-01-19T17:25:04+03:00 6 месяцев назад
1
Решение
64

Согласно исключению, кажется, что строка соединения имеет значение null. Вы можете использовать строку коннектора с жестким кодом в функции GetBlobContainer и протестировать ее снова.

Исходя из моего понимания, вам нужно изменить код var account = CloudStorageAccount.Parse(AzureCString); для var account = CloudStorageAccount.Parse(azureCString); в функции GetBlobContainer.

public CloudBlobContainer GetBlobContainer(string azureCString, string containerName)
{
var account = CloudStorageAccount.Parse(azureCString); // change AzureCString to azureCString
var blobClient = account.CreateCloudBlobClient();
return blobClient.GetContainerReference(containerName);
}

Также убедитесь, что AzureCString не нуль в функции DeleteConfirmed. Как я уже говорил, вы можете использовать строку подключения жесткого кода. Он должен работать.

ответил(а) 2021-01-19T17:25:04+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема