【问题标题】:C# async soap object handleC# 异步肥皂对象句柄
【发布时间】:2010-10-12 10:42:09
【问题描述】:

有没有办法将处理程序附加到soap调用?

例如:

我正在为数据网格中的每一行调用行验证。然后这会调用异步肥皂服务。在异步返回时,是否可以在不来回传递某种 id 的情况下知道我调用了哪一行?

谢谢

【问题讨论】:

    标签: c# .net wcf asynchronous


    【解决方案1】:

    如果对每一行进行一次调用。您可以将该行作为用户状态传递。例如使用基于事件的异步方法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; }
    

    【讨论】:

    • 这个用户状态是否被发送到服务器?我只在可能的情况下尝试将其保留在客户端。
    • UserState 留在客户端。
    【解决方案2】:

    如果您使用相同的处理程序来处理来自不同行的所有调用,那么是的,您必须这样做。否则,如果您对每一行都有一个处理程序,那么您就没有。

    它类似于处理程序,例如按钮点击。如果您对多个按钮使用相同的处理程序,则需要检查 sender 对象。

    我建议您在 HTTP 标头中使用一个值来设置 ID 并返回调用者。在某种程度上,这不应该出现在您的 Soap 消息中,因为服务器不需要知道您的 ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多