【发布时间】:2015-06-08 14:32:52
【问题描述】:
我在一个 asp.net 网站中托管了 OpenRIA WCF 服务。我有一个连接到 Authentiction 和 DomainService 的 WPF 客户端。我无法调用 Login 方法。它基本上不喜欢消息参数没有“包装”。请参阅下面的错误消息
OpenRiaServices.DomainServices.Client.dll 中发生了“System.InvalidOperationException”类型的未处理异常附加信息:合同“IPatientAuthenticationDomainServiceContract”的操作“登录”指定了多个请求正文参数在没有任何包装元素的情况下进行序列化。最多一个 body 参数可以在没有包装元素的情况下被序列化。删除额外的正文参数或将 WebGetAttribute/WebInvokeAttribute 上的 BodyStyle 属性设置为 Wrapped。在客户端,domainClient.ChannelFactory.Endpoint.EndpointBehaviors 中的 WebHttpBehavior 具有 DefaultBodyStyle = Wrapped
托管 OpenRIA 服务的 asp.net 项目将 Web 行为设置为 Wrapped。
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp defaultBodyStyle="Wrapped"/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
我会错过什么?有没有人遇到过这个问题?
一种可能的解决方法是更改方法参数以接受复杂类型,但我无法控制 AuthenticationService 的 Login 方法。它是 RIA 框架提供的基类的一部分。
谢谢,
安库尔
【问题讨论】: