0

Silverlight から Rally の SOAP サービスにアクセスできますか? デスクトップ アプリケーションでは .NET 2.0 プロキシからサービスにアクセスできますが、Silverlight では WCF クライアント プロキシ経由ではアクセスできません。次のおなじみの例外が発生します。

System.ServiceModel.CommunicationException: URI へのリクエストの試行中にエラーが発生しました ....これは、適切なクロスドメイン ポリシーが設定されていないか、ポリシーがない状態でクロスドメインの方法でサービスにアクセスしようとしたことが原因である可能性がありますこれは SOAP サービスには適していません。クロスドメイン ポリシー ファイルを公開し、SOAP 関連の HTTP ヘッダーを送信できるようにするために、サービスの所有者に連絡する必要がある場合があります。このエラーは、InternalsVisibleToAttribute 属性を使用せずに Web サービス プロキシで内部型を使用した場合にも発生する可能性があります。詳細については、内部例外を参照してください。

この問題は、サーバーにクロス ドメイン ポリシー ファイルがインストールされている必要がある Silverlight からクロス ドメイン リクエストを作成しようとしたことが原因であると考えています。この場合、なぜデスクトップ アプリケーションはそのようなポリシーを必要としないのでしょうか?

4

3 に答える 3

0

Silverlight 5 で利用可能な拡張アクセス許可機能を使用して、これを自分で解決しました。xap は内部インターネットに展開されているため、この解決策は受け入れられました。

于 2012-04-27T00:16:48.823 に答える
0

私は Silverlight の専門家ではありませんが、これは、Silverlight クライアントがダウンロード元のサーバー/ホスト以外のサイトに要求を行わないようにするために Silverlight が強制するクロスドメイン スクリプティング/セキュリティ サンドボックスのように見えます。 Silverlight クライアントには、サービス プロバイダー/開発者によってその権利が明確に付与されます。上記のエラー メッセージ:

「サービスの所有者に連絡して、クロスドメイン ポリシー ファイルを公開し、SOAP 関連の HTTP ヘッダーの送信が許可されていることを確認する必要がある場合があります。」

「サービスの所有者」とは、「外部」Web サービス (この場合は Rally) ではなく、Silverlight ホストの所有者を意味すると思います。

デスクトップ アプリやコンソール アプリには、この同じサンドボックス制限はありません。Silverlight クライアント経由で別のベンダーの Web サービスにアクセスしようとすると、同じ問題が発生する可能性があります。

次の Silverlight 固有のスレッドが見つかる場合があります。

クロスドメイン ポリシー

サーバーで Silverlight クロスドメイン ポリシー ファイルをセットアップおよび構成する方法の詳細に役立ちます。

于 2012-04-26T18:32:17.200 に答える
0

Silverlight は、セキュリティを念頭に置いて構築されています。つまり、Silverlight アプリケーションからのクロス サイト スクリプティングは既定でオフになっており、ケースバイケースで有効にする必要があります。一方、.NET デスクトップ アプリケーションは、一般的にはるかに優れたセキュリティ アクセス許可を持ち、任意の Web サービス、COM オブジェクト、およびネイティブ API を呼び出すことができます。

Silverlight でこの問題を回避する方法は、サーバー上にサービスを作成することです。Silverlight クライアント コードは、サード パーティの Web サービスを呼び出すサーバー側サービスを呼び出します。サーバー側のサービスは、.NET、Java、何でも賭けることができます。Web サーバーは通常、好きなように呼び出すことができます -- 問題は解決しました。

于 2012-04-26T19:38:22.637 に答える