2011年7月28日 星期四

WCF教學(11) - MessageContract

MessageContract可以用來變更SOAP封包的長像,例如想把資料放在Soap封包Header區段。以實例說明。

  • File->New Website->WCF Service->MyWCFService
  • 在ISerivce.cs檔加入一個Employee Class

public class Employee
{
    public string Name { get; set; }
    public int Age { get; set; }
}

  • 在IService中加一個Operation
[ServiceContract]
public interface IService
{
    [OperationContract]
    void GetEmployee(Employee emp);
    //略   
}
  • 在Service.cs實作

image

  • 拿掉GetEmployee其中的code

public void GetEmployee(Employee emp)
    {
    }

  • 按F5執行
  • 使用Visual Studio 2010執行wcftestclient.exe,試著呼叫GetEmployee方法

image

  • 切到XML檢視,預設Employee的Name與Age都會放在封包Body區段

image 

  • 修改Employee類別,加上MessageContract、MessageHeader、MessageBodyMember

[MessageContract]
public class Employee
{
    [MessageHeader]
    public string Name { get; set; }
    [MessageBodyMember]
    public int Age { get; set; }
}

  • 按F5執行,切到XML檢視,Employee的Name會放到Header,Age會放到Body

image

1 則留言:

阿弦 提到...

您好:
最近碰上一個SCVMM的WCF service的問題,
我張貼在"伊莉討論區",
網址為 http://www07.eyny.com/thread-7116354-1-1.html

懇請您抽空幫我解個惑,感恩^^

總瀏覽量