从asp.net 2.0 Web客户端到WCF Web服务的异步Web服务调用(异步问题)

时间:2009-08-03 03:50:00

标签: wcf web-services proxy client

我正在尝试从asp.net 2.0 Web客户端到WCF Web服务进行异步Web服务调用。我使用带有async选项的svcutil.exe创建了代理类。以下是调用Web服务的客户端代码示例:

protected void Page_Load(object sender, EventArgs e)   
{   
  WSClient client = new WSClient();   
  AsyncCallback asyncCallback = new AsyncCallback(WebServiceCallback);   
  AsyncCallState asyncCallState = new AsyncCallState(client);   
  client.BeginWS(value, asyncCallback, asyncCallState);   
  Response.Write("Big Test");   
}  

public void WebServiceCallback(IAsyncResult ar)   
{   
  AsyncCallState asyncCallState = (AsyncCallState)ar.AsyncState;   
  WSsClient client = (WSClient)asyncCallState.WebServiceState;   

  WSClientResult result = client.EndWS(ar);   
}  

使用代码作为参考; Page_Load中的所有内容都将执行,但在回调中执行client.EndWS之前,页面不会显示“大测试”。这似乎不是异步的。任何关于如何使异步调用异步的想法或建议都值得赞赏。

2 个答案:

答案 0 :(得分:2)

这不是Web服务问题。您需要了解ASP.NET的工作原理。

请参阅Wicked Code: Asynchronous Pages in ASP.NET 2.0

答案 1 :(得分:0)

您需要将async指令添加到页面中!完成此操作后,您可以使用completed和async。

e.g

接下来,您将事件连接到somemethodcompleted({some eventhandler}),您应该在生成的代理中找到它。

然后调用somemethodasync。将开始任务。

使用此方法将自动登记到asp.net的页面任务,这将阻止您在方法返回之前完成页面生命周期。

希望有所帮助

相关问题