3
|
Richard Berg · 技术社区 · 15 年前 |
1
4
从Carlos Figueira@ms得到了一个有希望的回复。
如果这会导致一个有效的解决方案,我会用更多的细节更新这个答案。 编辑:是的,工作起来很有魅力!卡洛斯解决方案的唯一问题是readouterxml()似乎不起作用。读取一个XML文档,然后写出一个流,可以更好地控制格式,所以这就是我一直坚持的观点。 注意:在MS规范中复制字典需要大约500行代码。我建议你抄我的除非你是个受虐狂- http://tfstoys.codeplex.com/sourcecontrol/changeset/view/26191?projectName=tfstoys#499486 |
2
1
二元火药……你用的是二进制编码!
你能不能——只是为了参数的缘故——试着用文本编码来代替,看看它是否有效??另外-在默认情况下,WCF将加密并签署每个消息,如果您捕获了该线,您将 应该 只看到二进制垃圾!-) 另外,在WCF通信中,您试图在什么时候拦截这些消息? 如果你在客户机和服务器之间“在线”截获它们,它们将在你的设置中被二进制编码——你将得到gooblydeguck。 然而,WCF提供了一个很好的可扩展性故事,因此您可以捕获消息 之前 它们是二进制编码的(在客户机上),或者 之后 它们已被解码(在服务器上,传入)。检查进入 消息检查器 -它们允许您查看通过WCF堆栈传输的消息,因为它们是在客户机上构建并在服务器上解包的! 查看一些优秀资源:
马克 |
3
1
目前正在努力解决这个问题,但我想出了一个更短的字典构造解决方案,通过使用反射来获取ServiceModel程序集中的静态字典:
|
4
0
除了Marc_给出的答案之外,请记住,xmlDictionaryReader只是一个扩展xmlReader接口的抽象类(同样适用于xmlDictionaryWriter)。他们仍然仅仅是在处理信息集,而不是它的任何具体表示。 就实际读/写BinaryMessageEncoder使用的二进制XML格式而言,这是由两个由wcf实现的内部类完成的:xmlBinaryReader和xmlBinaryWriter。我想,如果可以在周围使用一些反射,您可以直接使用它们,但除此之外,它们实际上是通过BinaryMessageEncoder间接使用的。 顺便说一句,您当然可以直接使用编码器,正如我在 this blog post . |