0

在我的程序中,我有多个点连接到 Blob 存储以读取/写入文件。他们都工作正常。但是,在另一个函数但与另一个 Blob 存储引用所在的类相同的函数中,我从以下代码行中收到一个 ArgumentNullException 声明“值不能为空”:

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));
4

1 回答 1

0

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

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

在此处输入图像描述

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

于 2012-12-03T07:00:16.760 回答