我开发了基于声明的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)
以下是客户端配置: - (Click here to view image)
这是我试图调用该服务的方式: -
任何人都可以让我知道我在这里做了什么错。可能是我没有将STS收到的令牌传递给WCF服务。或者可能是其他东西。
答案 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/