2009-08-28 2 views
2

VSTS 2008 + C#+ WCF + .Net 3.5 + Silverlight 3.0を使用しています。私はHTMLページでSilverlightコントロールをホストし、VSTS 2008からデバッグします(F5キーを押し、VSTS 2008ビルトインASP.Net開発Webサーバーで実行します)。次に別のWCFサービス(IIS 7.0 + Vistaを実行している別のマシンでホストされています) 。 WCFサービスは非常にシンプルで、定数文字列をクライアントに返すだけです。 URI「https://LabTest/Test.svc」への要求をしようとしながら、WCFクロスドメインポリシーセキュリティエラー

は、SilverlightのWCFサービスを呼び出すときに、私は次のエラーメッセージが表示されました、

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

ここにclientaccesspolicy.xmlファイルがあります。何か間違っていますか?

<?xml version="1.0" encoding="utf-8" ?> 
<access-policy> 
    <cross-domain-access> 
    <policy> 
     <allow-from http-request-headers="*"> 
     <domain uri="*"> 
     </domain> 
     </allow-from> 
     <grant-to> 
     <resource path="/" include-subpaths="true"></resource> 
     </grant-to> 
    </policy> 
    </cross-domain-access> 
</access-policy> 
+1

したがって、wcfサービスはWebサイトとして構築され、IISでホストされ、clientaccesspolicyは共有サイトのルートにありますか? – Johannes

+0

はい。私が投稿した内容は、clientaccesspolicy.xmlの内容です。私はサーバー側で自己署名証明書を使用しています、それはいいですか? – George2

+0

クロスドメインWCF httpsコールの自己署名証明書には制限があると聞きましたが、 – George2

答えて

0

これは暗闇の中での撮影です。しかし、VistaとIIS7上でWCFサービスをローカルに設定する同様のシナリオを実行しています。それが判明したので、私はweb.configファイルにいくつかの行をbaseAddressPrefixFiltersといっしょに追加する必要がありました。この他の記事を読む:Here。私のデフォルトのウェブサイトには複数のホストバインディングがあるため、問題がありました。 *:80とwww.mydomain.com:80を取るとWCFはそれを好まないでしょう。

0

私は同様の問題がありましたが、私の解決策はずっと簡単でした。 私のclientConfigファイルでは、私の異なるサービスのエンドポイントアドレスが異なるURLを持っていました。 いくつかはローカルホストを持ち、あるものはURLに自分のマシン名を持っていました。 ローカルホストを使ってみたら、問題は解決しました。

0

1つのアイデアは、fiddlerを使用してcrossdomainpolicy xmlを要求しているリクエストを見つけることです。それは失敗ですか?指しているアドレスを確認します。私はそれを使用して私の問題をデバッグしました。それはサーバーのルートを指していて、crossdomainpolicy xmlはWCFプロジェクトフォルダにありました。