我有一个类,它有一个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将其转换为字符串,但必须有更好的方法。
答案 0 :(得分:1)
你不需要传递CookieContainer本身 - 我认为你需要传递的是cookie容器包含的数据。在这种情况下,为什么不从cookie容器中提取数据 - 将其传递到接收端并重新创建cookie容器
您在服务边界上使用的类型有助于数据序列化 - 仅此而已。它不是能够跨服务操作传递任意.NET类型的意图。 WCF是一种基于消息的编程模型 - 我们只传递数据,而不是行为或类