過去,我需要在使用導入的WSDL Web引用的C#項目中創建自定義SOAP頭文件。我找到了一種方法來做到這一點,但我從來沒有滿意,我有理由懷疑是否有更好的方法。我所做的就是創建一個從SOAPHEADER派生的標題:是否有更好的方式來定製C#中的SOAP頭文件?
[System.Xml.Serialization.XmlTypeAttribute(Namespace = "http://model.test.net")]
[System.Xml.Serialization.XmlRootAttribute("securitytoken", Namespace = "http://model.test.net", IsNullable = false)]
public class SpecialHeader : SoapHeader
{
[System.Xml.Serialization.XmlTextAttribute()]
public string aheadervalue;
}
我只好再修改從WSDL生成的代碼和 CE添加一個參照的文新報頭的實例和每個前下網絡呼叫 我想包含自定義標題:
[System.Web.Services.Protocols.SoapHeaderAttribute("instancename", Direction=System.Web.Services.Protocols.SoapHeaderDirection.InOut)]
其中「實例名稱」是自定義頁眉的實例變量名在生成的類。
這可以很好地工作,除了WSDL中的任何更改都要求將它全部重新完成,因爲它會重新生成類。在其他語言中,頭文件可以添加到生成的代碼之外,所以也許我錯過了在C#中完成的方式。有沒有更好的方法來做到這一點?
@khebbie:我是WCF的新手,並嘗試設置自定義標題。消息合同聽起來像是要走的路。你知道一個很好的資源,我可以在這裏讀到嗎? – Adam 2010-04-05 21:50:12