我正在尝试从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之前,页面不会显示“大测试”。这似乎不是异步的。任何关于如何使异步调用异步的想法或建议都值得赞赏。
答案 0 :(得分:2)
这不是Web服务问题。您需要了解ASP.NET的工作原理。
答案 1 :(得分:0)
您需要将async指令添加到页面中!完成此操作后,您可以使用completed和async。
e.g
接下来,您将事件连接到somemethodcompleted({some eventhandler}),您应该在生成的代理中找到它。
然后调用somemethodasync。将开始任务。
使用此方法将自动登记到asp.net的页面任务,这将阻止您在方法返回之前完成页面生命周期。
希望有所帮助