我有一个将isoneway属性设置为true的wcf方法。现在当我从客户端调用此服务时,服务将一个无效的操作异常抛回到某个业务场景出错的客户端bcos。我的理解是它只会抛出endpointnotfound异常和timeoutexception.Can有人请解释为什么会发生这种情况?
答案 0 :(得分:2)
将合同标记为单向意味着:消息仅以一种方式流动。客户端将无法得到答案或等待服务执行,因此您的客户端无法在大多数时间内从服务中获得回复或错误。
如果你想要那个,那么也许单向服务不适合你,而你真正想要的是一个空回复的双向服务(即无效)
答案 1 :(得分:1)
OneWay方法是返回值还是具有ref / out参数?如果是,那么这就是您获得InvalidOperationException的原因。根据OperationContractAttribute.IsOneWay Property(http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute.isoneway(v=vs.110).aspx)的MSDN帮助,这是预期的行为。
查找备注部分,它有以下文字:
单向方法不能返回值或具有ref或out参数;否则抛出System.InvalidOperationException异常。
PS:我知道回复帖子已经太晚了,但对于像我这样在3年左右绊倒帖子的人,这可能会有用。