【发布时间】:2010-10-12 10:42:09
【问题描述】:
有没有办法将处理程序附加到soap调用?
例如:
我正在为数据网格中的每一行调用行验证。然后这会调用异步肥皂服务。在异步返回时,是否可以在不来回传递某种 id 的情况下知道我调用了哪一行?
谢谢
【问题讨论】:
标签: c# .net wcf asynchronous
有没有办法将处理程序附加到soap调用?
例如:
我正在为数据网格中的每一行调用行验证。然后这会调用异步肥皂服务。在异步返回时,是否可以在不来回传递某种 id 的情况下知道我调用了哪一行?
谢谢
【问题讨论】:
标签: c# .net wcf asynchronous
如果对每一行进行一次调用。您可以将该行作为用户状态传递。例如使用基于事件的异步方法http://msdn.microsoft.com/en-us/library/ms730059.aspx。
client.AddCompleted += new EventHandler<AddCompletedEventArgs>(AddCallback);
client.AddAsync(value1, value2, row);
并在回调方法中检索该行
static void AddCallback(object sender, AddCompletedEventArgs e) { var row = e.UserState as RowType; }
【讨论】:
如果您使用相同的处理程序来处理来自不同行的所有调用,那么是的,您必须这样做。否则,如果您对每一行都有一个处理程序,那么您就没有。
它类似于处理程序,例如按钮点击。如果您对多个按钮使用相同的处理程序,则需要检查 sender 对象。
我建议您在 HTTP 标头中使用一个值来设置 ID 并返回调用者。在某种程度上,这不应该出现在您的 Soap 消息中,因为服务器不需要知道您的 ID。
【讨论】: