Can I add Custom SOAP header in WCF incoming/outgoing messages in basicHttpBinding, like we can add custom authentication header in ASMX web services? Those custom SOAP header should be accessible using .net 2.0/1.1 web service clients (accessible by WSDL.EXE tool) .
相关问题
- How to make a .svc file write to asp.net Trace.axd
- WCF Service Using Client Certificates Requires Ano
- WCF error with net.tcp "The service endpoint faile
- WCF Service Reference Support Files Not Updating
- WCF Web Service: Upload a file, Process that file,
相关文章
- WCF发布Windows服务 POST方式报错 GET方式没有问题 应该怎么解决?
- XCopy or MOVE do not work when a WCF Service runs
- Could not find default endpoint element that refer
- The 'DbProviderFactories' section can only
- Do I need to expose a constructor in a WCF DataCon
- exposing net.tcp endpoint
- When is destructor called in a WCF service
- Getting error detail from WCF REST
Check out the WCF Extras on Codeplex - it's an easy extension library for WCF which offers - among other things - custom SOAP headers.
Another option is to use WCF message contracts in your WCF service - this also easily allows you to define and set WCF SOAP headers.
Here, the "operation" and the "transactionDate" are defined as SOAP headers.
If none of those methods help, then you should check out the concept of WCF Message Inspectors which you can write as extensions. They allow you to e.g. inject certain headers into the message on every outgoing call on the client, and retrieving those from the message on the server for your use.
See this blog post Handling custom SOAP headers via WCF Behaviors for a starting point on how to write a message inspector, and how to include it in your project setup.
The client side
IClientMessageInspector
defines two methodsBeforeSendRequest
andAfterReceiveReply
while the server sideIDispatchMessageInspector
has the opposite methods, i.e.AfterReceiveRequest
andBeforeSendReply
.With this, you could add headers to every message going across the wire (or selectively only to a few).
Here's a snippet from a
IClientMessageInspector
implementor we use to automagically transmit the locale information (language and culture info) across from the clients to the server - should give you an idea how to get started:On the server side, you'd then check for the presence of those headers, and if present, extract them from the SOAP envelope and use them.
UPDATE: okay, you're clients are on .NET 2.0 and not using WCF - good news is, this should still work just fine - see this blog post Custom SOAP Headers: WCF and ASMX for details. You could still use the message inspector on the server side to sniff and extract the custom headers being sent by your .NET 2.0 clients.
This solution was simpler for me: