1

クレーム ベースの WCF サービスと、wcf サービスを使用するクライアント アプリケーションを開発しました。しかし、クライアントアプリの実行中にエラーがスローされます-「受信ポリシーを検証できませんでした。詳細については、イベントログを参照してください」

イベント ログの詳細は次のとおりです。 -

Incoming policy failed validation.  No valid claim elements were found in the policy XML.

Additional Information:
   at System.Environment.get_StackTrace()
   at Microsoft.InfoCards.Diagnostics.InfoCardTrace.BuildMessage(InfoCardBaseException ie)
   at Microsoft.InfoCards.Diagnostics.InfoCardTrace.TraceAndLogException(Exception e)
   at Microsoft.InfoCards.Diagnostics.InfoCardTrace.ThrowHelperError(Exception e)
   at Microsoft.InfoCards.InfoCardPolicy.Validate()
   at Microsoft.InfoCards.Request.PreProcessRequest()
   at Microsoft.InfoCards.ClientUIRequest.PreProcessRequest()
   at Microsoft.InfoCards.Request.DoProcessRequest(String& extendedMessage)
   at Microsoft.InfoCards.RequestFactory.ProcessNewRequest(Int32 parentRequestHandle, IntPtr rpcHandle, IntPtr inArgs, IntPtr& outArgs)

同じことに関連する多くのSOの質問を経験しましたが、何も役に立ちませんでした。

WCFサービス側の構成は次のとおりです。-(ここをクリックして画像を表示

ここに画像の説明を入力

クライアント構成は次のとおりです: - (ここをクリックしてイメージを表示)

ここに画像の説明を入力

これが私がサービスを呼び出そうとしている方法です: -

ここに画像の説明を入力

誰かが私がここで何をしたのか教えてもらえますか。STS が受け取ったトークンを WCF サービスに渡していない可能性があります。または別のものかもしれません。

4

1 に答える 1

0

ChannelFactory で CardSpace をオフにする必要があります。

_clientChannel = new ChannelFactory<IService>("WS2007FederationHttpBinding_IService");
_clientChannel.ConfigureChannelFactory();
_clientChannel.Credentials.SupportInteractive = false;

SupportInteractive は CardSpace をオフにします。

それでもエラーが発生する場合は、サービスへの呼び出しを try catch ブロックでラップして、例外をキャッチします。エラーの内容を確認してください。

また、WCF トレースをオンにして、WCF 側でエラーが発生するかどうかを確認します。WCF トレースを有効にするには: http://stack247.wordpress.com/2013/05/23/wcf-tracing-and-diagnostic/

于 2013-05-23T21:03:20.030 に答える