过去,我需要在使用导入的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