0

私のプログラムでは、ファイルを読み書きするためにBlobストレージに接続する複数のポイントがあります。それらはすべて正常に動作します。ただし、別の関数で、別のBlobストレージ参照が作成されたクラスと同じクラスで、次のコード行から「値をnullにすることはできません」というArgumentNullExceptionが発生します。

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

この関数を使用してコード行を削除すると、他の関数でも同じコード行が機能するため、StorageConnectionStringが適切に構成されていることはわかっています。この1つの関数が問題を引き起こしているのに、他の関数は問題を引き起こしていない理由について、誰かが洞察を提供できますか?

これがあまりにも役立つかどうかはわかりませんが、これが私が使用している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サイトではなくWebロールを使用していることを前提としています。

于 2012-12-03T07:00:16.760 に答える