C# 有人能给我举一个控制台应用程序访问azure存储的例子吗

C# 有人能给我举一个控制台应用程序访问azure存储的例子吗,c#,azure,storage,C#,Azure,Storage,我正在尝试从控制台应用程序访问Azure存储,如下所示: CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("myConnectionString"); 其中连接字符串类似于: DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX 但我有一个例外: 已捕获System.Runtime.InteropServi

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

CloudStorageAccount storageAccount = CloudStorageAccount.FromConfigurationSetting("myConnectionString");  
其中连接字符串类似于:

DefaultEndpointsProtocol=https;AccountName=XXX;AccountKey=XXX

但我有一个例外:

已捕获System.Runtime.InteropServices.SehexException 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
在RoleEnvironmentGetConfigurationSettingValueW(UInt16*、UInt16*、UInt64、UInt64*)
位于Microsoft.WindowsAzure.ServiceRuntime.Internal.InteropProleManager.GetConfigurationSetting(字符串名称、字符串和ret)
位于Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(字符串configurationSettingName)
在C:\Users\siddjain\Documents\visualstudio 2010\Projects\consoleApplication1\Program.cs中的AzureUpload.Program.b_u2(字符串configName,Func`2 configSetter)处:第51行
位于Microsoft.WindowsAzure.CloudStorageAccount.StorageAccountConfigurationSetting..ctor(字符串配置设置名称)
位于Microsoft.WindowsAzure.CloudStorageAccount.FromConfigurationSetting(字符串设置名称)
在C:\Users\siddjain\Documents\Visual Studio 2010\Projects\ConsoleApplication1\Program.cs中的AzureUpload.Program.UploadBlob(字符串目录、字符串搜索模式、字符串容器)中:第87行
内部异常


在运行我的应用程序之前,我是否需要启动azure服务或其他东西?

FromConfigurationSetting使用角色运行时API,该API尝试读取配置设置。在Windows Azure之外运行时,这将不起作用


改为使用
CloudStorageAccount.Parse(“”
)。(或者从app.config或其他地方获取配置设置,然后将其传递到Parse())。

如Steve所述,您正在尝试从Azure配置设置中检索设置,而控制台应用中不存在这些设置

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

有一个很好的例子可以证明这一点。下面是那篇文章的代码片段。本质上,您应该在OnStart方法中指定配置发布者:

CloudStorageAccount.SetConfigurationSettingPublisher(
    StorageAccountFactory.GetConfigurationSettingPublisher()
);
在这种情况下,您将有一个工厂方法,根据您是否在Azure(RoleEnvironment.IsAvailable)中决定存储/检索配置设置的位置:

public静态操作GetConfigurationSettingPublisher()
{
如果(RoleEnvironment.IsAvailable)
返回(configName,configSetter)=>
configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
返回(configName,configSetter)=>
configSetter(ConfigurationManager.AppSettings[configName]);
}

问题行上有什么代码?
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]);
}