Я использую хранилище BLOB-объектов Azure для хранения фотографий.Работает нормально.Чтобы подключиться к хранилищу, я добавил AzureStorageConfig в свой appsettings.json
:
"AzureStorageConfig": {
"AccountName": "<accountname>",
"ImageContainer": "<containername>",
"AccountKey": "<accountkey>"
}
. Я дополнительно создал класс AzureStorageConfig
public class AzureStorageConfig
{
public string AccountKey { get; set; }
public string AccountName { get; set; }
public string BaseUrl { get; set; }
public Uri BlobEndpoint { get; set; }
public string ImageContainer { get; set; }
public Uri QueueEndpoint { get; set; }
public Uri TableEndpoint { get; set; }
}
и настроил его в файле Startup.cs:
services.Configure<AzureStorageConfig>(Configuration.GetSection(nameof(AzureStorageConfig)));
Таким образом, конфигурацию можно внедрить через внедрение зависимостей.
Для appsettings.development.json
я хотел бы использовать эмулятор хранилища Azure.Я нашел несколько учебных пособий, но все они используют строку подключения для подключения к эмулятору, а не конфигурацию.
Я пытался использовать данные, найденные на страницах Microsoft:
"AzureStorageConfig": {
"AccountName": "devstoreaccount1",
"ImageContainer": "images",
"AccountKey": "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==",
"BlobEndpoint": "http://127.0.0.1:10000/devstoreaccount1",
"TableEndpoint": "http://127.0.0.1:10002/devstoreaccount1",
"QueueEndpoint": "http://127.0.0.1:10001/devstoreaccount1"
}
IИнициализируйте объекты следующим образом:
public class AzureStorageService
{
private readonly CloudBlobContainer _imageContainer;
private readonly AzureStorageConfig _storageConfig;
public AzureStorageService(IOptions<AzureStorageConfig> config)
{
_storageConfig = config.Value;
CloudStorageAccount storageAccount;
StorageCredentials storageCredentials = new StorageCredentials(_storageConfig.AccountName, _storageConfig.AccountKey);
if (_storageConfig.BlobEndpoint == null)
{
storageAccount = new CloudStorageAccount(storageCredentials, true);
}
else
{
storageAccount = new CloudStorageAccount(
storageCredentials,
_storageConfig.BlobEndpoint,
_storageConfig.QueueEndpoint,
_storageConfig.TableEndpoint,
null);
}
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
_imageContainer = blobClient.GetContainerReference(_storageConfig.ImageContainer);
_imageContainer.CreateIfNotExistsAsync().Wait();
}
}
Мне пришлось запустить эмулятор вручную, запустив приложение "Microsoft Azure Compute Emulator".Как запустить (и инициализировать) эмулятор программно для автоматических тестов (а также для CI Azure Devops, который выполняет эти тесты)?
Большое спасибо.