c# - 谁能给我指出一个控制台应用程序访问 azure 存储的示例

标签 c# azure storage

我正在尝试从控制台应用程序访问 Azure 存储,如下所示:

CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("myConnectionString");  

其中连接字符串类似于:

DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX

但我得到一个异常(exception):

System.Runtime.InteropServices.SEHException 被捕获 消息=外部组件抛出异常。 来源=msshrtmi 错误代码=-2147467259

堆栈跟踪:

   at RoleEnvironmentGetConfigurationSettingValueW(UInt16* , UInt16* , UInt64 , UInt64* )

   at  Microsoft.WindowsAzure.ServiceRuntime.Internal.InteropRoleManager.GetConfigurationSetting(String name, String& ret)

   at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName)

   at AzureUpload.Program.<Init>b__2(String configName, Func`2 configSetter) in C:\Users\siddjain\Documents\Visual Studio 2010\Projects\ConsoleAplication1\Program.cs:line 51

   at Microsoft.WindowsAzure.CloudStorageAccount.StorageAccountConfigurationSetting..ctor(String configurationSettingName)

   at Microsoft.WindowsAzure.CloudStorageAccount.FromConfigurationSetting(String settingName)

   at AzureUpload.Program.UploadBlob(String directory, String searchPattern, String container) in C:\Users\siddjain\Documents\Visual Studio 2010\Projects\ConsoleApplication1\Program.cs:line 87

内部异常

在运行我的应用程序之前,我需要启动 Azure 服务或其他服务吗?

最佳答案

正如 Steve 提到的,您正在尝试从 Azure 配置设置中检索设置,而控制台应用程序中不存在这些设置。

如果要编写代码以在非 Azure 或 Azure 环境中运行,则可以指定配置发布者。在 Azure 中,它只是一个包装器。否则,您基本上会重定向到 app.config/web.config。

有一个很棒的 CodeProject article这证明了这一点。这是该文章的代码片段。本质上,您可以在 OnStart 方法中指定配置发布者:

CloudStorageAccount.SetConfigurationSettingPublisher(
    StorageAccountFactory.GetConfigurationSettingPublisher()
);

在这种情况下,您将有一个工厂方法,根据您是否在 Azure 中(RoleEnvironment.IsAvailable)来决定在何处存储/检索配置设置:

public static Action<string, Func<string,bool>> GetConfigurationSettingPublisher()
{
    if (RoleEnvironment.IsAvailable)
      return (configName, configSetter) => 
    configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
    return (configName, configSetter) => 
    configSetter(ConfigurationManager.AppSettings[configName]);
}

关于c# - 谁能给我指出一个控制台应用程序访问 azure 存储的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293429/

相关文章:

python-3.x - 访问 Azure Auto ML 的 Azure 数据存储时出现 SSL 错误

android - 如何将2个for循环的数据存储在列表中?

Android - 获取所有可用存储的列表

javascript - Ionic 2 - LocalStorage 或应用程序中的 Json 存储

c# - Web API 返回 UTF-16

c# - 使用字节数组作为字典键

Azure 函数未使用 Azure CLI 进行部署

.net - 在磁盘中存储许多文件的最佳方法

c# - 如何使用 C# 为 Crystal 报表动态设置数据库名称?

c# - 应用程序在 Windows 8.1 中崩溃