0

Azure ワーカー ロールでクライアントを初期化するために Microsoft.Azure.Documents ライブラリを取得する際に問題が発生しています。Nuget Package 0.9.1-preview を使用しています。

Azureドキュメントの例で行われたことを模倣しました

エミュレーターを介してローカルで実行すると、documentdb に正常に接続でき、期待どおりに実行されます。worker ロールで実行すると、一連の NullReferenceException が発生し、次に ArgumentNullException が発生します。

ここに画像の説明を入力

上で強調表示されている一番下の System.NullReferenceException には、このコール スタックがあります。 ここに画像の説明を入力

そのため、新しい DocumentClient でのこの呼び出しで nullReferenceExceptions が開始されます。

var endpoint = "myendpoint";
var authKey = "myauthkey";
var enpointUri = new Uri(endpoint);
DocumentClient client = new DocumentClient(endpointUri, authKey);

ローカルで実行する場合と、環境以外のワーカーロールで実行する場合とでは何も変わりません (明らかに)。

DocumentDb がワーカー ロールで動作するようになった人はいますか、それとも null 参照例外をスローする理由を知っている人はいますか? DocumentClient() に渡されるパラメーターが入力されます。

更新: より一般的なものに書き直そうとしました。これにより、少なくともワーカーロールを実行し、デバッガーをアタッチできるようになりました。新しい DocumentClient でエラーをスローしています。一部のセキュリティ パスが null のようです。初期化の必須パラメーターはどちらもヌルではありません。worker ロールが documentdb に接続できるようにするために変更する必要があるセキュリティ設定はありますか? (まだローカルで正常に動作します)

更新 2: インスタンスをリリース モードで実行できますが、デバッグ モードでは実行できません。つまり、誤って構成されたセキュリティ設定またはストレージ設定と関係があるに違いないと思いますか?

System.Security.SecurityExceptions を取得しているようです - The DocumentDb を使用している場合のみ - キューではそのエラーは発生しません。そのエラーのすべてのコール スタックは、System.Diagnostics.EventLog にあるようです。Intellitrace の概要で最初に確認した例外は、System.Threading.WaitHandleCannotBeOpenedException です。

詳細 Intellitrace サマリー例外データ: ここに画像の説明を入力 ここに画像の説明を入力

上が最も古く、下が最新です (つまり、System.Security.SecurityException が最初に発生し、次に NullReference が発生します)。

4

2 に答える 2

4

セキュリティ例外と null 参照例外を取り除くための解決策は、Intellitrace を無効にすることでした。これを行うと、デバッガーをデプロイしてアタッチし、すべてが機能していることを確認できました。

intellitrace の null と DocumentClient の間に何があるかはわかりませんが、うまくいけば、それはナゲットに関連しているだけであり、次の反復で修正されるでしょう。

于 2014-12-10T20:55:08.743 に答える
3

再現できません。

新しい Worker ロールを作成しました。単一インスタンス。cscfg に authkey と endoint 設定を追加しました。

WorkerRole クラス レベルでプライベートな静的 DocumentClient を作成しました

OnStart で DocumentClient を初期化する OnStop で DocumentClient を破棄する

ループ内の RunAsync で、クエリを実行すると期待どおりに動作します。

エミュレーターでのテストは機能します。Release to Production スロットとしてデプロイされます。動作します。リモート デバッグを使用してステージングにデバッグとしてデプロイされます。動作します。VS を CloudService に接続し、ループ内でブレークポイントにヒットしました。

作業ソリューション: http://ryancrawcour.blob.core.windows.net/samples/AzureCloudService1.zip

于 2014-12-05T02:54:28.210 に答える