[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;
}
我使用LoadAccount
呼叫ajax
WebMethod。在LoadAccount
我已将回调proxy_wsGetAccountsCompleted
添加到WCF的wsGetAccounts
。在proxy_wsGetAccountsCompleted
我正在构建结果以返回LoadAccount。
的问题:
我无法直接从'proxy_wsGetAccountsCompleted'返回结果,因此我将该结果存储在全局定义的字符串中,然后在LoadAccout
WebMethod的末尾返回该结果。我可以直接从proxy_wsGetAccountsCompleted
返回。
当我第一次调用LoadAccount
WebMethod时它返回空白结果,如果我第二次再次调用,那么我得到正确的结果。即使作为序列,我在它之上proxy_wsGetAccountsCompleted
之后返回全局定义的字符串。是吗?
对以下之间的序列/返回响应感到困惑:
答案 0 :(得分:1)
你正在做一些奇怪的事情:调用同步的wcf操作,调用异步操作。当然第一次它不会起作用。
LoadAccount()在获取wsGetAccountsAsync()结果之前返回。您可以同步调用wsGetAccountsAsync或使用异步操作,例如使用Signal R.。
请记住,当第二次调用操作时,您将获得先前请求的结果,如果您的方法接受某个参数,您将存储错误的值,即您之前请求的响应。