Я пытаюсь выполнить асинхронный вызов веб-службы из веб-клиента asp.net 2.0 в веб-службу WCF. Я создал прокси-класс, используя svcutil.exe с опцией async. Вот пример кода клиента, вызывающего веб-сервис:
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 будет выполнено, но на странице не будет отображаться «Большой тест» до тех пор, пока клиент не будет выполнен. EndWS будет выполнен в обратном вызове. Который не кажется асинхронным. Будем благодарны за любые идеи или предложения о том, как сделать асинхронный вызов асинхронным.