我正在通过消息总线扩展 WCF 传输,请求-回复模式对我来说效果很好。当我实现输入输出模式时,我遇到了一个问题。情况是:
1、我创建了InputChannel和OutputChannel,让TransportBindingElement返回。
2、我创建了一个合约接口,里面有两个方法。一个属性是 IsOneWay = true,假设它是 Method1;另一个不是名为 Method2 的。
3、如果我调用Method1,我可以看到它给了我一个RequestChannel和ReplyChannel,而不是InputChannel和OutputChannel。并且回复通道可以接收到 WCF 消息并返回 RequestContext。但是服务代码没有被调用。
4、如果我在Method1上设置IsOneWay = false,效果很好。
4、如果我调用Method2,效果很好。
5,我创建了另一个服务合同,它只有一个 IsOneWay = true 的方法。如果我调用这个方法,WCF 给了我 InputChannel 和 OutputChannel,它运行良好(服务代码执行)。
所以我的问题是: 1,如果我有一个 IsOneWay = true 方法和 IsOneWay = false 方法的服务,WCF 会给我请求-回复通道,对吗?
2,如何处理服务调用,方法是IsOneWay = true,但在同一个服务合同中还有IsOneWay = false方法?
顺便说一句,我注意到对于 IsOneWay = true 方法的请求消息,MessageID 为 NULL。我为请求消息设置了一个新 ID,但没有运气,仍然没有调用服务代码。