2009-08-03 5 views
1

asp.net 2.0 웹 클라이언트에서 WCF 웹 서비스로 비동기 웹 서비스 호출을하려고합니다. 비동기 옵션과 함께 svcutil.exe를 사용하여 프록시 클래스를 만들었습니다. 다음은 웹 서비스를 호출하는 클라이언트 코드의 예입니다.asp.net 2.0 웹 클라이언트에서 WCF 웹 서비스 (비동기 문제)로 비동기 웹 서비스 호출

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가 콜백에서 실행될 때까지 페이지에 "Big Test"가 표시되지 않습니다. 비동기로 보이지 않습니다. 비동기 호출을 비동기식으로 만드는 방법에 대한 아이디어 나 제안은 감사합니다.

+0

"비동기로 보이지 않습니다"라는게 무슨 뜻입니까? 어떤 결과가 나타 납니까? – Cheeso

+0

웹 서비스가 계속 실행되는 동안 브라우저에 "Big Test"가 표시 될 것으로 예상됩니다. 따라서 그는 ASP.NET을 이해하지 못한다는 의견을 내 보냅니다. –

답변

0

페이지에 async 지시문을 추가해야합니다! 이 작업을 완료하면 완료 및 비동기를 사용할 수 있습니다.

예컨대

다음 당신은 당신이 당신의 생성 된 프록시에서 찾아야한다 somemethodcompleted ({일부 이벤트 핸들러})에 이벤트를 연결할.

그런 다음 somemethodasync를 호출하십시오. 작업을 시작합니다.

이 메서드를 사용하면 메서드가 반환되기 전에 페이지 수명주기 완료를 방해하는 asp.net의 페이지 작업에 자동으로 참여하게됩니다.

희망 하시겠습니까?

관련 문제