【发布时间】:2012-02-20 08:31:49
【问题描述】:
我正在通过消息总线扩展 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会给我request-reply channel,对吗?
2,如何处理服务调用,方法是IsOneWay = true,但在同一个服务合同中也有IsOneWay = false方法?
顺便说一句,我注意到对于 IsOneWay = true 方法的请求消息,MessageID 为 NULL。我为请求消息设置了一个新 ID,但没有成功,服务代码仍然没有被调用。
【问题讨论】:
标签: wcf wcf-extensions