微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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]);
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐