• Want to receive the latest contracting news and advice straight to your inbox? Sign up to the ContractorUK newsletter here. Every sign up will also be entered into a draw to WIN £100 Amazon vouchers!

.Net SOAP Deserialization

wurzel

Contractor Among Contractors
Joined
Aug 6, 2008
Messages
1,877
Likes received
6
Thanks received
5
I've been trying to deserialise a SOAP message generated by a 3rd party application using the SOAPFormatter class. My application loads the assemblies that contain the requisite classes for this deserialisation but I always get this error "Parse Error, no assembly associated with Xml key _P1 ...."

Looking on Google some people are saying this error is generated when the assembly that serialised the message is different to the one that is trying to deserialise it. As the soap I'm trying to deserialise is from a non .Net application this will always be the case which means I am wasting my time dicking around trying to get it to work. Find it hard to believe that this is the case though.

Anyone got any ideas?
 
Can you post the full SOAP message here?
 
I've managed to get it working using the DataContractSerializer class. This allows you to specify the element containing the type to be serialised (i.e. webRequest in this case). The only thing I had to do that isn't outlined in any of the examples was to advance the XmlReader to the webRequest element.

Still can't work out why SoapFormatter wouldn't work though.



Here's the message anyway.....

deleted....
 
Last edited: 14:07
I believe the issue is that in order for the SoapFormatter to locate the correct assembly to deserialise the message is uses the root element and the namespace in the body of the message.

<ProcessSomeInsuranceCoMessage xmlns="SomeNamespace">


So the SomeNamespace is likely to be wrong or does not match the namespace on the assembly you have referenced. Perhaps the namespace contains some versioning info and it differs to the version you have?
 
So the SomeNamespace is likely to be wrong or does not match the namespace on the assembly you have referenced. Perhaps the namespace contains some versioning info and it differs to the version you have?

or the SomeNamespace is not accessible from the machine trying to access it. Firewalls can be a pain in the backside when issues like this appear.
 

Advertisers

Back
Top