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 回答