gpt4 book ai didi

WCF 序列化单元测试和此 XmlWriter 不支持 base64 编码数据。我应该使用什么 Writer?

转载 作者:行者123 更新时间:2023-12-04 14:26:51 25 4
gpt4 key购买 nike

我正在编写一些单元测试来序列化和反序列化我们所有可能跨越 WCF 边界的类型,以证明所有属性都会到达另一边。

我在 byte[] 属性上遇到了一些障碍。

[DataContract(IsReference=true)]
public class BinaryDataObject
{
[DataMember]
public byte[] Data { get; set; }
}

当我通过测试运行这个对象时,我得到 System.NotSupportedException: This XmlWriter does not support base64 encoded data .

这是我的序列化方法:
public static XDocument Serialize(object source)
{
XDocument target = new XDocument();
using (System.Xml.XmlWriter writer = target.CreateWriter())
{
DataContractSerializer s = new DataContractSerializer(source.GetType());
s.WriteObject(writer, source);
}
return target;
}

我突然想到我的序列化方法一定有缺陷 - WCF 可能不使用 XDocument实例并且可能不使用 System.Xml.XmlWriter实例。

WCF 默认使用什么 Writer?我想在我的测试中使用该类型的实例。

最佳答案

使用我的 Reflector ninja 技能,它似乎使用了一些内部类型:XmlDictionaryWriter 的子类.重写您的 Serialize方法如下:

    public static XDocument Serialize(object source)
{
XDocument target;
using (System.IO.MemoryStream stream = new System.IO.MemoryStream())
using (System.Xml.XmlWriter writer = XmlDictionaryWriter.CreateTextWriter(stream))
{
DataContractSerializer s = new DataContractSerializer(source.GetType());
s.WriteObject(writer, source);
writer.Flush();
stream.Position = 0;
target = XDocument.Load(stream);
}
return target;
}

一切都将得到修补。

关于WCF 序列化单元测试和此 XmlWriter 不支持 base64 编码数据。我应该使用什么 Writer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7245764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com