【问题标题】:Unable to get data from ajax function call from WCF service in first attempt第一次尝试无法从 WCF 服务的 ajax 函数调用中获取数据
【发布时间】:2016-05-03 14:04:31
【问题描述】:
[WebMethod]
public static string LoadAccount()
{
    address = new EndpointAddress(objClientSession.ServiceURL);
    proxy = new PMToolServices.MyAppServiceClient(binding, address);

    //Now call the web service to get the accounts
    proxy.wsGetAccountsCompleted += new EventHandler<MyAppServices.wsGetAccountsCompletedEventArgs>(proxy_wsGetAccountsCompleted);
    proxy.wsGetAccountsAsync();
    return strAccountList;
}

我正在使用ajax 调用LoadAccount WebMethod。在LoadAccount 中,我已将回调proxy_wsGetAccountsCompleted 添加到WCF 的wsGetAccounts。在proxy_wsGetAccountsCompleted 中,我正在构建返回到LoadAccount 的结果。 问题:

  • 我无法直接从“proxy_wsGetAccountsCompleted”返回结果,因此我将该结果存储在全局定义的字符串中,然后在LoadAccoutWebMethod 的末尾返回该结果。我可以直接从proxy_wsGetAccountsCompleted 退回吗?

  • 当我第一次调用 LoadAccount WebMethod 时它返回空白结果,如果我再次调用第二次我得到正确的结果。尽管作为序列,我在其上方的proxy_wsGetAccountsCompleted 之后返回了该全局定义的字符串。对吗?

对以下之间的序列/返回响应感到困惑:

  • proxy.wsGetAccountsAsync();
  • proxy_wsGetAccountsCompleted();
  • 返回 strAccountList

【问题讨论】:

    标签: asp.net wcf webmethod


    【解决方案1】:

    您正在做一些奇怪的事情:调用同步的 wcf 操作,调用异步操作。当然第一次是不行的。

    LoadAccount() 在获取 wsGetAccountsAsync() 结果之前返回。您可以以同步方式调用 wsGetAccountsAsync,也可以使用异步操作,例如使用 Signal R。

    请记住,当第二次调用该操作时,您将获得上一个请求的结果,如果您的方法接受某个参数,您将存储一个错误的值,即您上一个请求的响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2018-10-30
      • 1970-01-01
      • 2015-06-21
      相关资源
      最近更新 更多