WCF and Input Parameter Order in SOAP Envelope

input-parameters, request, soap, wcf

Solution

You need to use XmlSerializerFormat class in your WCF service interface.

[ServiceContract, XmlSerializerFormat]
public interface IGoodMessageService
{
    ...
}

Problem and solution is explained in this link: http://neimke.blogspot.com.tr/2012/03/serialization-ordering-causes-problems.html

Problem

I'm getting an Object reference not set to an instance of object error in my WCF web service which uses webHttpBinding (soap 1.1) I have noticed that if you have the input parameters in a certain order the error does not get raised. i.e. ``` <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://schemas.globalfoundries.com/NotificationService"> <soapenv:Header/> <soapenv:Body> <not:NotifyWorkflowItemUpdate> <not:userIDs>testUserID</not:userIDs> <not:taskID>testTaskID</not:taskID> <not:taskType>testTaskType</not:taskType> <not:status>testStatus</not:status> <not:appID>testAppID</not:appID> <not:message>testMessage</not:message> </not:NotifyWorkflowItemUpdate> </soapenv:Body> </soapenv:Envelope> ``` However if I change the order of the input parameters in the request template I get the aforementioned error. i.e. (note message and userIDs parameters are switched) ``` <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:not="http://schemas.globalfoundries.com/NotificationService"> <soapenv:Header/> <soapenv:Body> <not:NotifyWorkflowItemUpdate> <not:message>testMessage</not:message> <not:taskID>testTaskID</not:taskID> <not:taskType>testTaskType</not:taskType> <not:status>testStatus</not:status> <not:appID>testAppID</not:appID> <not:userIDs>testUserID</not:userIDs> </not:NotifyWorkflowItemUpdate> </soapenv:Body> </soapenv:Envelope> ``` Why is this happening? Are request parameters mapped to the .Net method parameters via the order and not by the names? Is there an attribute that I have to specify on the service contract to make named parameter mapping possible?

Original source