WCF Web Services ( SOAP Server ) – Read SOAP Envelope Header InnerXML Value from the SOAP Request ( "Service Contract" Based )
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.ServiceModel.Web; using System.Text; using ICMS_DAO.Entity; using ICMS_DAO.DAO; using System.Web.Services; using System.Web.Services.Protocols; using System.Xml; namespace APPS_WCF { public class SOAPLib { private int GetRootHeaderIndex(string name, string ns) { int i = 0; foreach(var item in OperationContext.Current.IncomingMessageHeaders) { if(item.Name.ToUpper().Equals(name.ToUpper())) { return i; } i++; } return 9999; } private string GetSubHeaderValue(string name, string ns, string subheadname) { if (OperationContext.Current.IncomingMessageHeaders.Count > 0) { int i = GetRootHeaderIndex(name, ns); String Value = ""; if(i != 9999) { XmlReader reader = OperationContext.Current.IncomingMessageHeaders.GetReaderAtHeader(i).ReadSubtree(); while (reader != null) { if (reader.Name.ToUpper().Contains(subheadname.ToUpper())) { Value = reader.ReadInnerXml(); //reader.Close(); //return Value; } reader.Read(); } } return Value; } else { return ""; } } } } |
String header = GetSubHeaderValue("Security", "n1", "CertificateHash").Replace("\n", ""); |