I'm extend the WCF transport over a message bus, the request-reply mode works well to me. When I'm implementing the input-output mode I met a problem. The situation is:
1, I created the InputChannel and OutputChannel and let the TransportBindingElement return them.
2, I created a contract interface, which has two methods. One has the attribute said IsOneWay = true, let's say it's Method1; the other was not which named Method2.
3, If I invoked Method1, I can see that it gave me a RequestChannel and ReplyChannel instead of InputChannel and OutputChannel. And the reply channel can receive the WCF message and return the RequestContext back. But the service code was not invoked.
4, If I set IsOneWay = false on Method1, it works well.
4, If I invoked Method2, it works well.
5, I created another service contract which have only one method with IsOneWay = true. If I invoked this method WCF gave me InputChannel and OutputChannel, and it works well (service code executed).
So my question is: 1, If I have a service with IsOneWay = true methods and IsOneWay = false methods, the WCF will give me request-reply channel, is that correct?
2, How can I handle the service invoke, which the method was IsOneWay = true, but also has IsOneWay = false methods in the same service contract?
BTW, I noticed that for the request messages to the IsOneWay = true method, the MessageID was NULL. I set a new ID to the request message but no luck, the service code still wasn't invoked.