This documentation is archived and is not being maintained.

HttpSimpleClientProtocol.BeginInvoke Method

Starts an asynchronous invocation of a method of an XML Web service.

Namespace:  System.Web.Services.Protocols
Assembly:  System.Web.Services (in System.Web.Services.dll)

protected IAsyncResult BeginInvoke(
	string methodName,
	string requestUrl,
	Object[] parameters,
	AsyncCallback callback,
	Object asyncState


Type: System.String

The name of the XML Web service method.

Type: System.String

The URL to use when creating the WebRequest.

Type: System.Object[]

An array of objects containing the parameters to pass to the XML Web service method. The order of the values in the array corresponds to the order of the parameters in the calling method of the derived class.

Type: System.AsyncCallback

The delegate to call when the asynchronous method call is complete. If callback is null, the delegate is not called.

Type: System.Object

The additional information supplied by a client.

Return Value

Type: System.IAsyncResult
An IAsyncResult that can be passed to the EndInvoke method to obtain the return values from the XML Web service method.


The request reached the server computer, but was not processed successfully.

The methodName parameter is used to find the types of the parameters and return values of the method that is invoking the BeginInvoke method. It is also used to find custom attributes that may have been added to the method. SoapDocumentMethodAttribute, SoapRpcMethodAttribute, and XmlElementAttribute provide additional information on the derived method that is required for the HTTP protocol.

asyncState is passed into callback and is included in the IAsyncResult that is returned from the BeginInvoke method. It is useful for passing information from the context of the asynchronous call to the handling of the asynchronous result in callback.

The following code example is an ASP.NET Web Form, which calls an XML Web service named Math. Within the EnterBtn_Click function, the Web Form starts and completes an asynchronous invocation of the Add XML Web service method.

<%@ Page Language="C#" %>
    <script language="C#" runat="server">
       void EnterBtn_Click(Object Src, EventArgs E) 
             MyMath.Math math = new MyMath.Math();

         // Call the Add XML Web service method asynchronously.
         IAsyncResult result = math.BeginAdd(Convert.ToInt32(Num1.Text), Convert.ToInt32(Num2.Text), null, null);

         // Wait for the asynchronous call to complete.

         // Complete the asynchronous call to the Add XML Web service method. 
         int total = math.EndAdd(result);

         Total.Text = "Total: " + total.ToString();


       <form action="MathClient.aspx" runat=server>

          Enter the two numbers you want to add and then press the Total button.
          Number 1: <asp:textbox id="Num1" runat=server/>  +
          Number 2: <asp:textbox id="Num2" runat=server/> =
          <asp:button text="Total" Onclick="EnterBtn_Click" runat=server/>
          <asp:label id="Total"  runat=server/>


The following code example is a proxy class generated by the Web Services Description Language tool (Wsdl.exe) for the Math XML Web service below. Within the BeginAdd method of the proxy class, the BeginInvoke method starts an asynchronous invocation of the Add XML Web service method.

namespace MyMath {
    [XmlRootAttribute("int", Namespace="http://MyMath/", IsNullable=false)]
    public class Math : HttpGetClientProtocol {
       public Math() 
          this.Url = "";

       public int Add(int num1, int num2) 
          return ((int)(this.Invoke("Add", ((this.Url) + ("/Add")), new object[] {num1,

       public IAsyncResult BeginAdd(int num1, int num2, AsyncCallback callback, object asyncState) 
          return this.BeginInvoke("Add", ((this.Url) + ("/Add")), new object[] {num1,
                         num2}, callback, asyncState);

       public int EndAdd(IAsyncResult asyncResult) 
          return ((int)(this.EndInvoke(asyncResult)));

namespace MyMath {
   [XmlRootAttribute(S"int", Namespace=S"http://MyMath/", IsNullable=false)]
   public __gc class Math : public HttpGetClientProtocol {
         this->Url = S"";

      int Add(String* num1, String* num2)
         Object* temp0 [] = {num1, num2};
         return *dynamic_cast<__box int*>(this->Invoke(S"Add", String::Concat(this->Url, S"/Add"), temp0));

      IAsyncResult* BeginAdd(String* num1, String* num2, AsyncCallback* callback, Object* asyncState)
         Object* temp1 [] = {num1, num2};
         return this->BeginInvoke(S"Add", String::Concat(this->Url, S"/Add"), temp1, callback, asyncState);

      int EndAdd(IAsyncResult* asyncResult)
         return *dynamic_cast<__box int*>(this->EndInvoke(asyncResult));


The following code example is the Math XML Web service, from which the preceding proxy class was created.

<%@ WebService Language="C#" Class="Math"%>
 using System.Web.Services;
 using System;

 public class Math {
      [ WebMethod ]
      public int Add(int num1, int num2) {
          return num1+num2;

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0