1つのWebロールと1つのワーカーロールを持つプロジェクトがあります。ローカルでテストするときはいつでも、Webとワーカーの両方の役割が意図したとおりに機能します。(ローカルバージョンはAzure Compute Emulatorを使用しますが、Service Busキューとメッセージキューはライブクラウドバージョンを使用することに注意してください。)ただし、Cloud Serviceワーカーの役割は、特定の操作中にクラッシュする傾向があります。インスタンスが「リサイクル」され、メッセージがAzureServiceBusキューでスタックします。クラウドサービスをローカルで実行して初めて、メッセージが正常に処理され、キューから削除されます。ロールが機能している場合でも、Azureはダッシュボードで、ワーカーロールが「異常」に実行されていることを通知することがよくあります。
ある時点で、Azureポータルは次のエラーを出力しました。
未処理の例外:System.Reflection.ReflectionTypeLoadException
このためにプロジェクトに例外処理を追加し、更新をクラウドにデプロイした後に再試行しましたが、同じことが引き続き発生します。プロジェクトに例外処理を追加したとき、System.Reflectionライブラリをワーカーロールに追加する必要がありましたが、これはさらに混乱しました。プロジェクトで最初に使用していなかったライブラリへの呼び出しでエラーが発生する理由がわかりません。
この問題が何であるかについて誰かが何か考えを持っていますか?
アップデート:
手動でデバッグしたところ、ワーカーロールのRun()で例外が呼び出されていることに気付きました。問題の原因となるコード行には、EntityFrameworkを使用してデータベースを呼び出すことが含まれます。具体的な行は次のとおりです。
画像imageEntity=db.Images.Find(ImgViewFromQueue.Id);
この問題は、AzureサーバーでEntityFrameworkが有効化または構成されていないことに関係しているのではないかと思います。