【发布时间】:2010-07-01 13:19:00
【问题描述】:
我有一个 wcf 方法,它的 isoneway 属性设置为 true。现在,当我从客户端调用此服务时,服务正在向客户端 bcos 抛出一个无效的操作异常,因为某些业务场景出错了。我的理解是它只会抛出endpointnotfound异常和timeoutexception。有人可以解释为什么会这样吗?
【问题讨论】:
标签: wcf
我有一个 wcf 方法,它的 isoneway 属性设置为 true。现在,当我从客户端调用此服务时,服务正在向客户端 bcos 抛出一个无效的操作异常,因为某些业务场景出错了。我的理解是它只会抛出endpointnotfound异常和timeoutexception。有人可以解释为什么会这样吗?
【问题讨论】:
标签: wcf
将您的合约标记为单向意味着:消息仅以一种方式流动。客户根本不会得到答复或等待服务执行,因此您的客户在大多数情况下不可能从服务获得答复或故障。
如果您想要,那么也许单向服务不适合您,而您真正想要的是双向服务,但回复为空(即无效)
【讨论】:
OneWay 方法是返回值还是有 ref/out 参数?如果是,那么这就是您收到 InvalidOperationException 的原因。根据 MSDN 对 OperationContractAttribute.IsOneWay 属性 (http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.isoneway(v=vs.110).aspx) 的帮助,这是预期的行为。
查找备注部分,有以下文字:
单向方法不能有返回值或有 ref 或 out 参数;否则会抛出 System.InvalidOperationException 异常。
PS:我知道现在回复帖子为时已晚,但对于像我这样在 3 年左右后偶然发现帖子的人来说,它可能会有用。
【讨论】: