【问题标题】:WCF Service not accepting multiple body parametersWCF 服务不接受多个正文参数
【发布时间】: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 框架提供的基类的一部分。

谢谢,

安库尔

【问题讨论】:

    标签: wcf rest ria


    【解决方案1】:

    问题已解决。只是想分享修复。我正在使用 Kyle McClellan 为在不使用浏览器内客户端时在 Auth 服务和 Domain 服务之间共享 cookie 而编写的 SharedCookieContainer。见http://blogs.msdn.com/b/kylemc/archive/2010/05/14/ria-services-authentication-out-of-browser.aspx

    此代码中的 SharedCookieBehavior 是 WebHttpBehavior 的扩展。此类需要在新建时将 DefaultBodyStyle 设置为 Wrapped。简单的修复,但我花了一段时间才弄清楚。

    谢谢,

    安库尔

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多