2

ソリューション内の複数のロール プロジェクト間で共有されるクラス ライブラリがあります。これらのプロジェクトのうちの 2 つは、Web ロールと Worker ロールです。

それぞれの構成設定は同じです。

<Setting name="QueueConnectionString" value="UseDevelopmentStorage=true" />

それぞれがこの関数を呼び出しています。

public static void AddMessage(string Message)
    {
        var account = CloudStorageAccount.DevelopmentStorageAccount;
        ServicePoint queueServicePoint = ServicePointManager.FindServicePoint(account.QueueEndpoint);
        queueServicePoint.UseNagleAlgorithm = false;
        var client = account.CreateCloudQueueClient();
        var queue = client.GetQueueReference(DefaultRoleInstanceQueueName);
        queue.CreateIfNotExist();
        queue.AddMessage(new CloudQueueMessage(Message));
 }

これをワーカー ロールで実行すると、問題なく動作します。キューメッセージの読み書きが正常に行われることを確認しました。Web ロールで実行すると、queue.CreateifNotExist() への呼び出しがクラッシュし、「Response is not available in this context」というエラーが表示されます。これを引き起こしている可能性のある情報を検索しようとしましたが、これまでのところ検索の努力は成果を上げていません. 追加できる情報があれば教えてください。

4

1 に答える 1

6

さて、さらに多くの作業を行った後、Global.asaxApplication_Start内から呼び出していたためだと判断しました。

これをWebRole.csOnStart()関数に移動すると、正しく機能します。

于 2010-09-03T23:07:04.873 に答える