使用Silverlight客户端获取WCF服务声明时出现问题

时间:2011-08-03 08:22:39

标签: .net silverlight-4.0 wif claims-based-identity

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

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

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

我甚至尝试使用'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

亲切的问候,

汉斯

0 个答案:

没有答案