检索Blob存储帐户时出现空值异常

时间:2012-12-02 17:14:16

标签: .net azure blob

在我的程序中,我有多个点连接到Blob存储以读/写文件。他们都很好。但是,在一个不同的函数但与另一个Blob存储引用相同的类中,我得到一个ArgumentNullException,从以下代码行中声明“Value not not null”:

CloudStorageAccount account = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));

我知道StorageConnectionString已正确配置,因为当我使用此函数删除代码行时,相同的代码行可用于其他函数。任何人都可以提供一些有关这一功能导致问题的原因,而不是其他功能吗?

不确定这是否有用,但这里是我使用的4行代码。这是非常标准的。

CloudStorageAccount account = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
CloudBlobClient client = account.CreateCloudBlobClient();
CloudBlobContainer container = client.GetContainerReference(CONTAINER);
CloudBlockBlob blob = container.GetBlockBlobReference(FilePath(null, imageId));

1 个答案:

答案 0 :(得分:0)

根据您的评论,这可能与您将连接字符串存储在web.config中有关。在某些情况下,您的代码可能看起来像是在同一个进程中运行,但实际上并非如此。以 WebRole.cs / WorkerRole.cs 类为例。简而言之,这些类中的代码将在不同的进程中运行,这意味着它们将无法访问您的web.config。例如,WebRole.cs将从 WaIISHost.exe.config 文件中读取其设置。

您是否可以从web.config中删除连接字符串并将其添加到服务配置中?您不需要修改代码,因为CloudConfigurationManager将首先查看服务配置,如果它没有在此处找到设置,它将回退到web / app.config

enter image description here

注意:在这个答案中,我假设您使用的是Web角色,而不是网站。