このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開

Service Bus のトラブルシューティング

更新日: 2015年7月

次のセクションでは、Microsoft Azure の Service Bus のアプリケーションの作成で発生する可能性のある問題とそれらの解決方法について説明します。

以下のセクションでは、Service Bus アプリケーションのトラブルシューティングの方法について説明します。

現象

Service Bus アプリケーションはデプロイメント ファブリックではエラーなしで実行されますが、Microsoft Azure サーバーへのデプロイ後にクラッシュします。

原因

現在、Service Bus アセンブリは Microsoft Azure プラットフォームに統合されていません。そのため、アプリケーションはサーバーに存在しないアセンブリにアクセスしようとします。

解決策

Service Bus アセンブリをデプロイ パッケージに追加します (たとえば、アセンブリをローカル コピーに設定します)。そのため、アセンブリを手動で更新する必要があることに注意してください。

現象

エンドポイントをプログラムによって設定すると、アプリケーションが動作しますが、それらの同じ構成設定を関連付けられた App.config ファイルに格納すると失敗します。アプリケーションは次のエラーを生成します。

System.Configuration.ConfigurationErrorsException:構成バインドの拡張 'system.serviceModel/bindings/netTcpRelayBinding' が見つかりませんでした。このバインドの拡張が system.serviceModel/extensions/bindingExtensions で適切に登録されていること、および正しく入力されていることを確認してください。

原因

現在、Service Bus アセンブリは Microsoft Azure プラットフォームに統合されていません。ローカル コンピューターで、Microsoft Azure SDK をインストールしている場合、Machine.config ファイルは、NetTcpRelayBinding などのいくつかの Windows Communication Foundation (WCF) 拡張機能を追加するように変更されます。それによって、アプリケーションは Machine.config ファイルの netTcpRelayBinding セクションなどで、関連情報を見つけることができます。これは Microsoft Azure プラットフォームでは発生しないため、関連情報を見つけることができません。

解決策

Microsoft Azure と連携する構成の場合、ローカル Machine.config ファイルから App.config ファイルに拡張機能をコピーします。そうしないと、netTcpRelayBinding などのタグが認識されません。ただし、これを実行すると、拡張機能の重複のため、アプリケーションがローカルで実行しません。そのため、1 つはローカルに、1 つは Microsoft Azure 用に、2 つのバージョンの App.config を維持する必要があります。この特定のタスクはプログラムによって実行することをお勧めします。

次のトラブルシューティングのトピックには、Service Bus への接続方法に関する情報が含まれます。このセクションの後半で解決方法が見つからない場合は、次のいずれかの可能性を考慮する必要がある場合があります。

  • ネットワーク トレースの実行 – ネットワークが停止している可能性があります。ネットワーク モニターを使用して、ネットワークのステータスを判断することは、問題のデバッグに役立つことがあります。

現象

クライアント アプリケーションで Service Bus に接続しようとすると、次のエラーが表示されます。

ハンドルされていない例外:System.ServiceModel.EndpointNotFoundException:エンドポイントが見つかりませんでした。HTTP ポート 80 および TCP ポート 808 を使用して、インターネットに接続できることを確認します。

原因

このエラーにはさまざまな可能性のある原因があります。

解決策

  • ホストが実行しているかどうかを確認します。実行していない場合は、接続するエンドポイントがありません。ここに示す 2 つの手順のいずれかを使用して、サービスを実行できます。

    1. デバッグ モード - Visual Studio ソリューション エクスプローラーでサービス プロジェクトを右クリックし、[デバッグ] をクリックします。次に、[新しいインスタンスを開始] をクリックします。サービスの開始後、クライアントについてもこの手順を繰り返します。サービスが既に実行している場合でも、クライアントをデバッグできます。

    2. デバッグ モード以外 - サービス プロジェクトをスタートアップ プロジェクトとして設定します。[デバッグ] メニューから、[デバッグなしで開始] をクリックします。こうすることで、サービス アプリケーションが実行しますが、Visual Studio は影響を受けません。サービスの開始後、クライアント プロジェクトをスタートアップ プロジェクトとして設定し、それを実行します。

  • Microsoft.ServiceBus.dll アセンブリ (Visual Studio 内) の [ローカルにコピー] プロパティを [true] に設定していることを確認します。クラウド サーバーには Azure SDK がインストールされていません。そのため、パッケージにアセンブリを含める必要があります。そうしないと、ワーカー ロールが正しく実行しません。

  • 実際に、HTTP ポート 80 および TCP ポート 808 を使用して、インターネットに接続できることを確認します。

現象

アプリケーションが Service Bus に接続できず、代わりに次のエラー メッセージを返します。

"クライアントは構成されているタイムアウト時間内 (00:01:00) にセキュリティ ネゴシエーションを完了できません。現在のネゴシエーション段階は 1 (00:00:59.9429968) です。"

原因

認証資格情報が誤って設定されている可能性があります。

解決策

クライアントを認証しているかどうかを確認します。特に、RelayClientAuthenticationTypeNone に設定しているかどうかを確認します。既定で、この値は RelayAccessToken で、ユーザーが共有シークレットなどの認証要求を提供する必要があります。ただし、手動で値を None に設定した場合、クライアントは認証を提供する必要がありません。

認証の種類を設定していない場合、RelayClientAuthenticationType が既定値の RelayAccessToken である可能性があります。この場合は、認証要求が正しく指定されているかどうかを確認します。詳細については、TechNet の「 Service Bus 接続のセキュリティ保護と認証.

現象

Service Bus に接続しようとすると、次のエラーが表示されます。

"メッセージのセキュリティを検証しているときにエラーが発生しました。"

原因

このエラーの可能性のある 1 つの原因は、ローカル コンピューターの UTC 時刻が Service Bus サーバーの UTC 時刻より進んでいることです。たとえば、ローカル UTC タイム スタンプが 8:06 である一方、サーバーのタイム スタンプが 8:05 であるとします。サーバーはこれを無効なタイム スタンプであると見なし、「現象」セクションで説明したエラー メッセージを生成します。

解決策

ローカル コンピューターの UTC 時刻が正しいことを確認します。必要に応じて、手動でクロックを数分遅らせて設定します。Service Bus は少し古いメッセージをセキュリティ違反と見なしません。少し先に発生したように見えるものだけをセキュリティ違反と見なします。

現象

サービスが正常に実行していることがわかっている場合でも、ATOM フィードでそのサービスを見つけることができません。

原因

サービス レジストリの既定の動作は、ATOM フィード経由でサービスを公開しません。

解決策

方法:Service Bus レジストリにサービスを公開する」に説明するように、エンドポイントを検出可能に設定します。

表示:
© 2015 Microsoft