Here's a very easy way to read SOAP headers in WCF: Link
int index = OperationContext.Current.IncomingMessageHeaders.FindHeader("foo", ""); string h = OperationContext.Current.IncomingMessageHeaders.GetHeader(index);