基于声明的wcf服务出错 - 无法验证传入策略

时间:2013-01-22 07:57:07

标签: .net wcf azure claims-based-identity

我开发了基于声明的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)

我经历了很多与之相关的问题,但没有任何帮助。

以下是wcf服务端的配置: - (Click here to view image

enter image description here

以下是客户端配置: - (Click here to view image

enter image description here

这是我试图调用该服务的方式: -

enter image description here

任何人都可以让我知道我在这里做了什么错。可能是我没有将STS收到的令牌传递给WCF服务。或者可能是其他东西。

1 个答案:

答案 0 :(得分: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/