2012-10-04 4 views
1

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 [email protected] 
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 [email protected] 
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 [email protected] 
65 99 06 52 6F 62 65 72 e?.Rober 
74 40 0E 50 72 69 6D 65 [email protected] 
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 [email protected] 
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 [email protected] 
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

게시물의 일부로 인코딩 된 메시지를 게시 할 필요는 없습니다. 더 유용한 것이 당신의 탈 직렬화 오류입니다. –

답변

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을 사용하도록 설정되었는지 확인하십시오. 클라이언트가 2 진 직렬화 대기열 메시지를 전달하고 서버가 Xml 형식을 사용하도록 설정된 경우 오류가 발생합니다.

관련 문제