1

我有一个 Silverlight 客户端应用程序,它登录到 STS 并获得一组索赔作为回报。我使用 Identity Training Kit 附带的 Silverlight IdentityModel。这工作正常。

问题是当我进行服务调用(用于获取一些数据)时,在服务中我可以看到 IClaimsIdentity 类型的标识,但它的声明集合是空的。使用 ClaimsIdentitySessionManager InvokeAsync 方法调用该服务,以便将 IssuedToken 信息添加到 SOAP 标头。服务调用在会话管理器的上下文中执行。

我尝试了不同类型的代码和设置,但我无法获得对服务的声明。我已经读过它应该通过使用 CustomBinding 来工作,但是在使用它时我得到一个错误:Content Type text/xml; charset=utf-8 不受 service 支持。客户端和服务绑定可能不匹配

我什至尝试在不同的消息版本中使用“TextMessageEncoding”而不是“BinaryMessageEncoding”,但没有帮助。

这个错误是什么意思,我该如何解决?

用于调用 WCF 服务的代码:

private void GetWeekPlanning()
{
   var service = _ServiceManager.GetServiceDescriptionAndCheckNull(typeof(ILeisureServiceAsync), ServiceTransportType.BasicHttpBinding);

   var binding = new CustomBinding()
   {
      Elements = { new BinaryMessageEncodingBindingElement(), new HttpsTransportBindingElement() }
   };

   var proxy = new LeisureServiceAsyncProxy(binding, service.ServiceEndpointAddress);

   ClaimsIdentitySessionManager.Current.InvokeAsync(
      () =>
      {
         proxy.BeginGetActivityPlanListByDate(
            DateTime.MinValue,
            DateTime.MaxValue,
            result =>
            {
               var plans = proxy.EndGetActivityPlanListByDate(result);

               SynchronizationContext.Post(
                  callback =>
                  {                           
                     // Do something with plans
                  },
                  null);
            },
            null);
      },
    proxy.InnerChannel,
    WSTrust13Constants.KeyTypes.Bearer);
}

来自服务器 App.config 的代码片段:http: //pastebin.com/7RmPQVUR

客户端 web.config: http: //pastebin.com/Bz9W6mUj

亲切的问候,

汉斯

4

0 回答 0