反序列化消息队列的问题(已修改)

时间:2012-10-04 19:59:37

标签: wcf asp-classic msmq

我正在使用MSMQ创建一个WCF服务,该服务发送一个Person类的实例,该实例是来自队列的消息的内容。当mansaje被发送到队列时,序列化的方式不会保留为XML结构,否则将在消息中进行二进制序列化。我想知道如何序列化消息,使其不是二进制的,可以反序列化为xml或反序列化二进制消息。

00 01 00 01 04 02 23 6E ......#n
65 74 2E 6D 73 6D 71 3A et.msmq:
2F 2F 6C 6F 63 61 6C 68 //localh
6F 73 74 2F 70 72 69 76 ost/priv
61 74 65 2F 6D 69 63 6F ate/mico
6C 61 03 07 56 02 0B 01 la..V...
73 04 0B 01 61 06 56 08 s...a.V.
44 0A 1E 00 82 99 36 68 D...??6h
74 74 70 3A 2F 2F 74 65 ttp://te
6D 70 75 72 69 2E 6F 72 mpuri.or
67 2F 49 50 72 6F 63 65 g/IProce
73 61 72 52 65 67 69 73 sarRegis
74 72 6F 73 2F 50 72 6F tros/Pro
63 65 73 61 72 52 65 67 cesarReg
69 73 74 72 6F 44 0C 1E istroD..
00 82 99 23 6E 65 74 2E .??#net.
6D 73 6D 71 3A 2F 2F 6C msmq://l
6F 63 61 6C 68 6F 73 74 ocalhost
2F 70 72 69 76 61 74 65 /private
2F 6D 69 63 6F 6C 61 01 /micola.
56 0E 40 10 50 72 6F 63 V.@.Proc
65 73 61 72 52 65 67 69 esarRegi
73 74 72 6F 08 13 68 74 stro..ht
74 70 3A 2F 2F 74 65 6D tp://tem
70 75 72 69 2E 6F 72 67 puri.org
2F 09 01 69 29 68 74 74 /..i)htt
70 3A 2F 2F 77 77 77 2E p://www.
77 33 2E 6F 72 67 2F 32 w3.org/2
30 30 31 2F 58 4D 4C 53 001/XMLS
63 68 65 6D 61 2D 69 6E chema-in
73 74 61 6E 63 65 40 08 stance@.
5F 70 65 72 73 6F 6E 61 _persona
40 06 43 65 64 75 6C 61 @.Cedula
99 07 31 32 33 34 35 36 ?.123456
37 40 06 4E 6F 6D 62 72 7@.Nombr
65 99 06 52 6F 62 65 72 e?.Rober
74 40 0E 50 72 69 6D 65 t@.Prime
72 41 70 65 6C 6C 69 64 rApellid
6F 99 07 53 70 65 6E 63 o?.Spenc
65 72 40 0F 53 65 67 75 er@.Segu
6E 64 6F 41 70 65 6C 6C ndoApell
69 64 6F 99 04 48 61 6C ido?.Hal
6C 40 09 44 69 72 65 63 l@.Direc
63 69 6F 6E 99 15 55 6E cion?.Un
69 74 65 64 20 53 74 61 ited Sta
74 65 2C 20 46 6C 6F 72 te, Flor
69 64 61 01 01 01 01    ida....

1 个答案:

答案 0 :(得分:1)

在配置文件中,您可以指定用于服务的序列化格式。

<service name="YourService">
    <endpoint address="msmq.formatname:DIRECT=OS:.\private$\yourMsmq"
              binding="msmqIntegrationBinding"
              bindingConfiguration="XmlBinding"
              contract="YourContract" />

</service>

<msmqIntegrationBinding>
    <binding serializationFormat="Xml" 
             name="XmlBinding" 
             durable="false" 
             exactlyOnce="false">
    </binding>
</msmqIntegrationBinding>

以下是可能的其他值列表MsmqMessageSerializationFormat Enumeration

I would like to know how to serialize the message so that it is not in binary and can be deserialized as xml or deserialize the message in binary.

如果您询问如何确保客户端和服务器序列化为相同的格式,则需要确保所有客户端和服务器的绑定配置都设置为使用相同的serializationFormat。如果客户端传入二进制序列化队列消息并且服务器设置为使用Xml格式,则会出错。