Проблема получения претензий к службе WCF с клиентом Silverlight - PullRequest
1 голос
/ 03 августа 2011

У меня есть клиентское приложение Silverlight, которое входит в систему STS и получает взамен набор претензий. Я использую Silverlight IdentityModel, который входит в комплект Identity Training Kit. Это отлично работает.

Проблема заключается в том, что когда я выполняю вызов службы (для получения некоторых данных), внутри службы я вижу идентификатор типа IClaimsIdentity, но его коллекция утверждений пуста. Служба вызывается с помощью метода InvokeAsync ClaimsIdentitySessionManager, поэтому информация 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

С уважением,

Hans

...