WCF Tutorial
www.Learn2Expert.net A new ASP.Net MVC 4, SSIS, Interview Q/A tutorial - Visit - www.Learn2Expert.net
Skip Navigation LinksHomeContractsMessage ContractMessageHeaderArray No of Views: 161070

MessageHeaderArray Attribute

Consider the Message contract type definition as shown below.

 
[MessageContract]
    public class Department
    {
        [MessageHeader]
        public string DepartmentID;
        [MessageHeader]
        public string DepartmentName;
        [MessageHeader]
        public Employees Employee();

    }

In this we are having array of Employee type as message header. When this converted to SOAP Header it looks as shown below.

<Department>
  <DepartmentID>PRO1243</DepartmentID>
  <DepartmentName>Production</DepartmentName>
  <Employees>
    <Employee>Sam</Employee>
    <Employee>Ram</Employee>
    <Employee>Raja</Employee>
  </Employees>
</Department>

Suppose you want to show the all employee detail in same level. We can use MessageHeaderArray attribute which will serialize the array element independently. If you use the MessageHeaderArray attribute of Employees, SOAP message will look as shown below.

<Department>
  <DepartmentID>PRO1243</DepartmentID>
  <DepartmentName>Production</DepartmentName>
  <Employee>Sam</Employee>
  <Employee>Ram</Employee>
  <Employee>Raja</Employee>
</Department>

Note: MessageHeaderArray Attribute is applicable only for Array, not for collection.

Tips!

  • Always create the service with Interface->Implementation format, mention the contract in Interface.
  • Define the service in Class library and refer the class library in Host project. Don’t use service class in host project.
  • Change the instance mode to per call as default.
  • Always catch exception using try/catch block and throw exception using FaultException < T >.
  • Logging and Include exception should be enable while compiling the project in debug mode. While in production deployment disable the logging and Include exception details.