2012-04-26 3 views
0

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

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

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

答えて

0

私はSilverlightのエキスパートではありませんが、これはSilverlightクライアントがサーバー/ホスト以外のサイトに要求していないことをSilverlightが保証するクロスドメインスクリプト/セキュリティサンドボックスのようですSilverlightクライアントがサービスプロバイダ/ devloperによってその権利を明示的に付与されていない限り、ダウンロードされます。上記のエラーメッセージで:

"クロスドメインポリシーファイルを公開し、SOAP関連のHTTPヘッダーを送信できるようにするには、サービスの所有者に連絡する必要があります。

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

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

あなたはこのSilverlightの固有のスレッドを見つけるかもしれない:

Cross Domain Policy

どのようにセットアップすると、サーバー上のSilverlightのクロスドメインポリシーファイルを設定の詳細について参考に。

0

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

Silverlightでこの問題を回避する方法は、サーバー上にサービスを作成することです。 Silverlightクライアントコードはサーバー側のサービスを呼び出し、サーバー側のサービスはサードパーティのWebサービスを呼び出します。サーバー側のサービスは、.NET、java、何でも可能です。 Webサーバーは、一般的に問題が解決された、問題のあるものを呼び出すことができます。

+0

お返事ありがとうございます。私はこのアプローチを検討しましたが、Silverlight 5の信頼性を高めて解決することができました。 –

+0

これは解決策のもう一つの方法です。 :)ブラウザ内で実行する必要がない場合は、ブラウザアプリからの信頼性を高める方が簡単かもしれません。違いは、ブラウザ内の昇格された信託のようなものです。どちらの方があなたの状況や組織によって異なるのでしょうか。 –

0

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

関連する問題