【问题标题】:How to return CookieContainer via WCF?如何通过 WCF 返回 CookieContainer?
【发布时间】:2012-02-09 13:23:43
【问题描述】:

我有一个类,它有一个 cookie 容器作为其成员(由 [DataMember] 标记)。当我尝试在 TCP Web 服务调用后返回此类时,我收到以下异常:

The communication object, System.ServiceModel.Channels.ServiceChannel, cannot be 
used for communication because it is in the Faulted state.

当我删除 [DataMember] 属性时,服务调用工作正常(当然,没有返回 cookie 容器)。

我需要服务调用返回这个对象,CookieContainer 可以通过二进制序列化器轻松序列化。

所以,这是我的问题:如何让服务返回 CookieContainer 而不抛出异常?

我想过在 CookieContainer 上做一个二进制序列化,之后可以通过 Convert.ToBase64String 将其转换为字符串,但必须有更好的方法来做到这一点。

【问题讨论】:

    标签: c# wcf web-services tcp nettcpbinding


    【解决方案1】:

    您不需要传递 CookieContainer 本身 - 我认为您需要传递的是 cookie 容器包含的数据。在这种情况下,为什么不将数据从 cookie 容器中提取出来 - 将其传递并在接收方重新创建 cookie 容器

    您在服务边界上使用的类型有助于数据序列化 - 仅此而已。能够跨服务操作传递任意 .NET 类型并不是本意。 WCF 是一个基于消息的编程模型——我们只传递数据,而不是行为或类

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 1970-01-01
      相关资源
      最近更新 更多