I've created an Input/Output filter combination to create a custom header. I am using WSE 1.0. The ProcessMessage( SoapEnvelope envelope) is called on the output filter. This code creates a custom header and puts it on the SOAP Header Collection. On the receving end my input filter (on the web service) needs to process this header information which is strangely enough not present. I used TCP trace to listen to the message and the message looks pretty fine on the sending end but the header is empty on the receving side.

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<CustomHeader>
<Name>Less, Clue</Name>
</CustomHeader>
<wsrp:path soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="1" xmlns:wsrp="http://schemas.xmlsoap.org/rp">
<wsrp:action>http://tempuri.org/ReturnIdentity</wsrp:action>
<wsrp:to>http://localhost:8080/WebService/Sample.asmx</wsrp:to>
<wsrp:id>uuid:8e32fd83-0005-4fd7-9b8b-1e90f595daa2</wsrp:id>
</wsrp:path>
<wsu:Timestamp xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
<wsu:Created>2004-06-04T19:51:25Z</wsu:Created>
<wsu:Expires>2004-06-04T19:56:25Z</wsu:Expires>
</wsu:Timestamp>
</soap:Header>
<soap:Body>
<ReturnIdentity xmlns="http://tempuri.org/"/>
</soap:Body>
</soap:Envelope>

on the receiving end

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Header>
<wsu:Timestamp xmlns:wsu="http://schemas.xmlsoap.org/ws/2002/07/utility">
<wsu:Created>2004-06-04T19:51:25Z</wsu:Created>
<wsu:Expires>2004-06-04T19:56:25Z</wsu:Expires>
</wsu:Timestamp>
</soap:Header>
<soap:Body>
<ReturnIdentityResponse xmlns="http://tempuri.org/">
<ReturnIdentityResult/>
</ReturnIdentityResponse>
</soap:Body>
</soap:Envelope>