c# – 任何人都可以指出一个控制台应用程序访问azure存储的示例

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

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

连接字符串的位置如下:

DefaultEndpointsProtocol = https和帐户名= XXX; AccountKey = XXX

但我得到一个例外:

捕获到System.Runtime.InteropServices.SEHException
  Message =外部组件抛出异常.
  来源= 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

的InnerException

在运行我的应用程序之前,是否需要启动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]);
}

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...