WCF SOAP Web サービスを含む asp.net Web アプリケーションでホストされている Silverlight アプリケーションがあります。アプリケーションは、SSL を使用して HTTPS://... リンクで実行されています。IIS 7.5 を実行しているテスト サーバーに展開すると、すべて正常に動作し、期待どおりに動作します。また、ローカル マシンと上記のテスト サーバーの両方で SSL を使用して実行される RESTful WCF サービスを含む 2 つ目の Web アプリケーションもあります (ただし、この場合は Silverlight クライアントはありません)。
私の問題は、逆シリアル化が行われる部分で SOAP サービスから応答を取得するときに、Silverlight クライアントがセキュリティ エラーを受け取ることですが、それは私のローカル マシンでのみです。
return base.Channel.EndGet...(IAsyncResult) // <-- exception reported here:
System.ServiceModel.CommunicationException: エラーが発生しました URI 'https://localmachinename.domain.com:8000/Service.svc' にリクエストを送信しようとしています。 これは、ドメインを越えた方法でサービスにアクセスしようとしたことが原因である可能性があります。 適切なクロスドメイン ポリシーが適用されているか、SOAP サービスに不適切なポリシーが適用されています。 クロスドメイン ポリシー ファイルを公開するには、サービスの所有者に連絡する必要がある場合があります また、SOAP 関連の HTTP ヘッダーを送信できるようにします。このエラーも を使用せずに Web サービス プロキシで内部型を使用したことが原因です。 InternalsVisibleToAttribute 属性。詳細については、内部例外を参照してください 詳細。---> System.Security.SecurityException ---> System.Security.SecurityException: セキュリティ エラーです。 System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse (IAsyncResult asyncResult) で System.Net.Browser.BrowserHttpWebRequest.c__DisplayClassa.b__9 (オブジェクト sendState) で System.Net.Browser.AsyncHelper.c__DisplayClass4.b__0 (オブジェクト sendState) で --- 内部例外スタック トレースの終了 --- System.Net.Browser.AsyncHelper.BeginOnUI (SendOrPostCallback beginMethod、オブジェクトの状態) で System.Net.Browser.BrowserHttpWebRequest.EndGetResponse (IAsyncResult asyncResult) で System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse (IAsyncResult 結果) で --- 内部例外スタック トレースの終了 --- System.ServiceModel.Channels.Remoting.RealProxy.Invoke (オブジェクト [] 引数) で proxy_2.EndGetTypes (IAsyncResult) で NameSpace.ClientClass.ServiceContractInterfaceImplementation.EndGetTypes (IAsyncResult 結果) で
SOAP サービスの clientaccesspolicy.xml は次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from http-request-headers="SOAPAction">
<domain uri="*" />
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
私が間違っていることのヒントはありますか?デプロイされたアプリケーションは、テスト Web サーバーで正常に動作します。
2012 年 12 月 6 日: 問題は解決しません。いくつかの更新/詳細情報:
Web サービスは Windows 認証と偽装を使用します。テスト サーバーとローカル コンピューターの唯一の違いは、アプリケーション プールが異なる ID で実行されることです。どちらの場合も、技術ドメイン ユーザーです。私が見つけた唯一の違いは、ローカル マシンのユーザーが Active Directory で「委任に対して信頼されている」フラグを付与されていなかったことです。したがって、Kerberos の問題である可能性があると想定しました。ただし、安静な WCF サービスとクライアントを実行すると、これが問題になることはありませんでした。さらに、SOAP サービスに Windows フォーム クライアントを使用すると、ローカル マシンですべてが正常に動作し、意図したとおりに開発/デバッグが可能になります。
したがって、Silverlight の問題である必要があります。
私が得られないのは、この恐ろしいセキュリティエラーが、ほとんどの場合と同様にクロスドメインポリシーの問題に起因すると仮定すると、それらのドメインはどこで交差しているのかということです. すべてがローカル マシンで実行されている必要があり、他のサービスは呼び出されません。これは、IIS Express を使用して発生するべきではありませんか?
誰でも助けることができますか?