次の方法で共有


RIA サービス ソリューションの配置に関するトラブルシューティング

WCF RIA サービス ソリューションのトラブルシューティングでは、多くの異なる層で例外が発生する可能性があるため、独特の考慮が必要になります。アプリケーションの効果的なトラブルシューティングのためには、これらの異なる層がどのようにエラーを報告するかについて理解する必要があります。このトピックでは、これらの層について説明し、例外が発生したときの RIA サービス アプリケーションのトラブルシューティング手法をいくつか示します。また、RIA サービス の配置で発生する可能性のある多くの問題は、新しい配置ガイドに示されています。詳細については、「RIA サービス ソリューションの配置に関するガイド」を参照してください。

例外のフロー

RIA サービス アプリケーションでは、最も低い元の層からクライアントまで、次の順序で例外が発生します。

  1. ドメイン サービス

  2. RIA サービス サービス ホスト

  3. WCF

  4. ASP.NET

  5. IIS

  6. Silverlight アプリケーション

レイヤーからの例外フロー

ASP.NET エラーの詳細情報の有効化

既定では、Web.config ファイルの customErrors 要素は RemoteOnly に設定されます。つまり、リモート クライアントは ASP.NET エラーの詳細情報を受け取りません。アプリケーションをデバッグするには、customErrorsOff に設定し、クライアントで ASP.NET エラーの詳細情報を表示できるようにします。

note注 :
エラー メッセージによって機密情報がユーザーに公開される可能性があるため、customErrorsOff に設定してアプリケーションを公開しないようにしてください。

Fiddler の使用によるエラーの検査

ドメイン サービス内で発生するすべての例外は、エラー ステータス コード 200 で Silverlight クライアントに送信されます。WCF 層またはそれより下位の層でスローされるすべての例外は、ステータス コード 404 で Silverlight クライアントに送信されます。Fiddler HTTP デバッガーを実行すると、実際のエラーを表示できます。

ドメイン サービスの直接的な参照

ドメイン サービス用の .svc ファイルを直接参照することは、WCF サービスが使用可能かどうかを確認するうえで有効な手順です。ただし、.svc ファイルはソリューション内に存在しないため、.svc ファイルへのパスを判断するのは簡単ではありません。次のパターンを使用すると、Web ブラウザーでドメイン サービスを直接参照できます。

http://[ホスト]/[ドメイン サービスの変更されたクラス名].svc

変更されたクラス名を判断するには、完全修飾クラス名を使用してすべてのピリオド (.) をダッシュ (-) に置き換えます。したがって、

ExampleApplication.Web.CustomerDomainService

という名前のドメイン サービスには、次の .svc ファイルがあります。

ExampleApplication-Web-CustomerDomainService.svc

このファイルが localhost 上でホストされている場合は、次の場所に移動してファイルを直接参照します。

https://localhost/ExampleApplication-Web-CustomerDomainService.svc

このサービスを使用できる場合は、サービスに関する情報およびサービスのテスト方法を示した Web ページが表示されます。サービスを使用できない場合は、問題の特定に役立つ情報が記載されていることがあるエラー ページが表示されます。エラーが発生した場合、例外の発生元は RIA サービス サービス ホスト層である可能性があります。

ドメイン サービスの OnError メソッドのオーバーライド

DomainService 操作の処理中に回復できないエラーが発生すると、OnError メソッドが呼び出されます。このメソッドをオーバーライドして、クライアントに送信する前にエラーを検査できます。

従来の WCF トレース機能の使用

WCF 層での例外のトラブルシューティングは、任意の WCF サービスのトラブルシューティングと同様に行います。WCF サービスの診断トレースの詳細については、「トレース」を参照してください。

WCF 層で発生する例外は、Fiddler には表示されません。.svc ファイルを参照して、サービス例外のトラブルシューティングを行うことができます。エラーが発生せずに .svc ファイルを参照できても、サービスが実行時に失敗する場合、例外の発生元は WCF 層である可能性があります。

ASP.NET と IIS の設定の確認

ASP.NET 層および IIS 層でスローされる例外の場合、RIA サービス アプリケーションからの情報はスタックに含まれません。次のような状況で、このレベルの例外が表示されます。

  • Web.config ファイルに、使用中の IIS バージョン用の正しい HttpModule 要素がない。

  • WCF が Web サーバーで有効になっていない。