gpt4 book ai didi

azure - 使用 ASP.NET Core 2.0 中的新配置访问 Azure 云存储

转载 作者:行者123 更新时间:2023-12-03 00:42:25 25 4
gpt4 key购买 nike

有没有办法在 Startup 类的 ConfigureServices 中配置我的 Azure 云存储,就像配置 DatabaseContext 一样?

var connection = Configuration.GetConnectionString("myDatabaseConnectionString");
services.AddDbContext<DatabaseContext>
(options => options.UseSqlServer(connection));

我知道我可以通过将 IConfiguration 实例作为 ConfigureServices 中的单例对象添加到服务集合中,然后在 Controller 中注入(inject) IConfiguration 来从 Controller 内访问连接字符串。

但是我如何在下面的类(class)中访问它,或者这是一个不好的做法,并且有更好的方法(例如在 services.Add ...)?

public class ClassifiedsToProcess
{
public static void AddMessage(string message)
{
var storageConnectionString = Configuration.Get("AppSettings:ConnectionString");
storageAccount = CloudStorageAccount.Parse(storageConnectionString);
...
}
}

谢谢!

最佳答案

以下是我如何按照 Martin Brandl 的建议使用 IOptions 解决问题

Controller 代码

private string makeJson;
private MyAzureQueue MyAzureQueue;


public AdminController(IOptions<AzureOptions> optionsAccessor)
{
MyAzureQueue = new MyAzureQueue(optionsAccessor);
}


public IActionResult Index()
{
MyAzureQueue.AddMessage("my message");
return View();
}

MyAzureQueue 类

public interface IMessageRepository
{
void AddMessage(string message);
}

public class MyAzureQueue: IMessageRepository
{
private readonly CloudQueue _queue;
public ClassifiedsToProcess(IOptions<AzureOptions> optionsAccessor)
{
CloudStorageAccount storageAccount = AzureStorageHelper.getStorageAccount(optionsAccessor.Value.StorageConnectionString);
_queue = AzureStorageHelper.GetQueue(storageAccount, "mystorageaccount");
}

public void AddMessage(string message)
{
CloudQueueMessage cloudQueueMessage = new CloudQueueMessage(message);
_queue.AddMessageAsync(cloudQueueMessage);
}
}

Azure 选项类

public class AzureOptions
{
public AzureOptions()
{
}

public string StorageConnectionString { get; set; }
}

在 Startup.cs ConfigureServices 方法中,我添加了以下两行

services.AddOptions();
services.Configure<AzureOptions>(Configuration.GetSection("Azure"));

这就是我的 appsettings.json 的样子

{
"Azure": {
"StorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=XXXXXXXXXXXXXXXXXXXXX;EndpointSuffix=core.windows.net"
}
}

关于azure - 使用 ASP.NET Core 2.0 中的新配置访问 Azure 云存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com