使用ASP.NET Core 2.0中的新配置访问Azure云存储
是否有一种方法可以在使用ASP.NET Core 2.0中的新配置访问Azure云存储,azure,asp.net-core-mvc,azure-storage,asp.net-core-2.1,Azure,Asp.net Core Mvc,Azure Storage,Asp.net Core 2.1,是否有一种方法可以在Startup类的ConfigureServices中配置我的Azure云存储,与配置我的DatabaseContext的方法相同 var connection = Configuration.GetConnectionString("myDatabaseConnectionString"); services.AddDbContext<DatabaseContext> (options => options.UseSqlServer(co
Startup
类的ConfigureServices
中配置我的Azure云存储,与配置我的DatabaseContext的方法相同
var connection = Configuration.GetConnectionString("myDatabaseConnectionString");
services.AddDbContext<DatabaseContext>
(options => options.UseSqlServer(connection));
谢谢 您应该尝试避免直接使用IConfiguration,而是使用 在你的例子中,我会。G实现一个IMessageRepository,它使用存储帐户来持久化消息
ClassifiedStopProcess类将具有对它的构造函数依赖关系,AddMessage方法将使用它(它不应该是静态的,因为您希望访问存储库) 您应该尝试避免直接使用IConfiguration,而是使用 在你的例子中,我会。G实现一个IMessageRepository,它使用存储帐户来持久化消息
ClassifiedStopProcess类将具有对它的构造函数依赖关系,AddMessage方法将使用它(它不应该是静态的,因为您希望访问存储库) 下面是我如何按照Martin Brandl的建议使用IOptions解决问题的 控制器代码
private string makeJson;
private MyAzureQueue MyAzureQueue;
public AdminController(IOptions<AzureOptions> optionsAccessor)
{
MyAzureQueue = new MyAzureQueue(optionsAccessor);
}
public IActionResult Index()
{
MyAzureQueue.AddMessage("my message");
return View();
}
{
"Azure": {
"StorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=XXXXXXXXXXXXXXXXXXXXX;EndpointSuffix=core.windows.net"
}
}
在Startup.cs ConfigureServices方法中,我添加了以下两行
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);
}
}
public class AzureOptions
{
public AzureOptions()
{
}
public string StorageConnectionString { get; set; }
}
services.AddOptions();
services.Configure<AzureOptions>(Configuration.GetSection("Azure"));
下面是我如何按照Martin Brandl的建议使用IOptions解决问题的 控制器代码
private string makeJson;
private MyAzureQueue MyAzureQueue;
public AdminController(IOptions<AzureOptions> optionsAccessor)
{
MyAzureQueue = new MyAzureQueue(optionsAccessor);
}
public IActionResult Index()
{
MyAzureQueue.AddMessage("my message");
return View();
}
{
"Azure": {
"StorageConnectionString": "DefaultEndpointsProtocol=https;AccountName=mystorageaccount;AccountKey=XXXXXXXXXXXXXXXXXXXXX;EndpointSuffix=core.windows.net"
}
}
在Startup.cs ConfigureServices方法中,我添加了以下两行
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);
}
}
public class AzureOptions
{
public AzureOptions()
{
}
public string StorageConnectionString { get; set; }
}
services.AddOptions();
services.Configure<AzureOptions>(Configuration.GetSection("Azure"));
谢谢你的快速回答!事实上,IMessageRepository看起来很不错。不幸的是,关于选项模式的文档对我来说有点混乱,您能在我的示例中给我一个更具体的答案吗?我还尝试根据您的指导实现IMessageRepository,但仍然无法访问配置部分。有什么想法吗?你可以在这里找到我所做的,谢谢你的快速回答!事实上,IMessageRepository看起来很不错。不幸的是,关于选项模式的文档对我来说有点混乱,您能在我的示例中给我一个更具体的答案吗?我还尝试根据您的指导实现IMessageRepository,但仍然无法访问配置部分。有什么想法吗?你可以找到我在这里做的事