2015-06-08 3 views
1

У меня есть служба WCF OpenRIA, размещенная на веб-сайте asp.net. У меня есть WPF-клиент, который подключается к Authentiction и DomainService. У меня возникли проблемы с вызовом метода Login. В основном это не нравится, что параметры сообщения не «обернуты». Смотрите сообщение об ошибке нижеWCF Service не принимает несколько параметров тела

Необработанное исключение типа «System.InvalidOperationException» произошло в OpenRiaServices.DomainServices.Client.dll Дополнительная информация: Операция «Логин» договора «IPatientAuthenticationDomainServiceContract» задает несколько параметров запроса тела сериализовать без любые элементы оболочки. Не более одного параметра тела можно сериализовать без элементов обертки. Удалите дополнительные параметры тела или установите свойство BodyStyle в атрибуте WebGetAttribute/WebInvokeAttribute для обертывания. На стороне клиента, WebHttpBehavior в domainClient.ChannelFactory.Endpoint.EndpointBehaviors имеет DefaultBodyStyle = обернутый

asp.net проект, который хостинг услуг OpenRIA имеет веб-поведение установлено завернутые.

<system.serviceModel> 
<behaviors> 
     <endpointBehaviors> 
     <behavior name="web"> 
      <webHttp defaultBodyStyle="Wrapped"/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 

Что я могу пропустить? Кто-нибудь столкнулся с этой проблемой?

Возможным обходным решением является изменение параметров метода для принятия сложного типа, но у меня нет контроля над методом Login для службы аутентификации. Это часть базового класса, который предоставляет инфраструктура RIA.

Спасибо,

Ankur

ответ

1

Устранена. Просто хотел поделиться исправлением. Я использую SharedCookieContainer, который Kyle McClellan написал для совместного использования cookie между сервисом Auth и службой домена, когда не использует клиент в браузере. См. http://blogs.msdn.com/b/kylemc/archive/2010/05/14/ria-services-authentication-out-of-browser.aspx

SharedCookieBehavior в этом коде является расширением WebHttpBehavior. Для этого класса должен быть установлен DefaultBodyStyle в Wrapped при его обновлении. Просто исправить, но мне потребовалось некоторое время, чтобы понять.

Спасибо,

Анкур

Смежные вопросы