SoapHttpClientProtocol.EndInvoke(IAsyncResult) Método

Definición

Finaliza una invocación asincrónica de un método de servicios Web XML utilizando SOAP.

protected object[] EndInvoke(IAsyncResult asyncResult);

Parámetros

asyncResult
IAsyncResult

Objeto IAsyncResult devuelto a partir del método BeginInvoke(String, Object[], AsyncCallback, Object).

Devoluciones

Object[]

Matriz de objetos que contiene el valor devuelto, así como cualquiera de los parámetros out o por referencia del método de la clase derivada.

Excepciones

asyncResult no es un valor devuelto a partir del método BeginInvoke(String, Object[], AsyncCallback, Object).

La solicitud llegó al servidor, pero no se procesó correctamente.

La solicitud no fue válida para el estado actual del objeto.

Error al obtener acceso a la red.

Ejemplos

El ejemplo de código siguiente es una clase de proxy generada por Wsdl.exe para el Math servicio web XML. Dentro del EndAdd método de la clase proxy, el EndInvoke método completa la invocación asincrónica al método de Add servicio web XML.


namespace MyMath {
    using System.Diagnostics;
    using System.Xml.Serialization;
    using System;
    using System.Web.Services.Protocols;
    using System.Web.Services;

    [System.Web.Services.WebServiceBindingAttribute(Name="MyMathSoap", Namespace="http://www.contoso.com/")]
    public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public MyMath() {
            this.Url = "http://www.contoso.com/math.asmx";
        }

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace="http://www.contoso.com/", ResponseNamespace="http://www.contoso.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
        public int Add(int num1, int num2) {
            object[] results = this.Invoke("Add", new object[] {num1,
                        num2});
            return ((int)(results[0]));
        }

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

        [System.Diagnostics.DebuggerStepThroughAttribute()]
        public int EndAdd(System.IAsyncResult asyncResult) {
            object[] results = this.EndInvoke(asyncResult);
            return ((int)(results[0]));
        }
    }
}

El ejemplo de código siguiente es el Math servicio web XML, desde el que se creó la clase de proxy anterior.

<%@ WebService Language="C#" Class="MyMath"%>
 using System.Web.Services;
 using System;
 
 [WebService(Namespace="http://www.contoso.com/")] 
 public class MyMath {
      [ WebMethod ]
      public int Add(int num1, int num2) {
          return num1+num2;
          }
 }

Comentarios

Normalmente, no llamaría EndInvoke al método directamente, a menos que estuviera creando su propia clase de proxy para un servicio web XML.

Una clase de proxy generada por la herramienta Lenguaje de descripción de servicios web (Wsdl.exe) para un servicio web XML expone los métodos de servicio web XML como nombres de la clase de proxy para llamar a los métodos de servicio web XML de forma sincrónica. Para llamar a los métodos de servicio web XML de forma asincrónica, se agregan dos métodos adicionales a la clase proxy para cada método de servicio web XML, uno con el Begin prefijo agregado al nombre del método de servicio web XML y otro con el End prefijo agregado.

La clase proxy llama al EndInvoke método para completar una llamada de invocación asincrónica al método de servicio web XML. Por ejemplo, si un servicio web XML expone un método de servicio web XML denominado Add, la clase proxy contiene un método denominado EndAdd, para completar una invocación asincrónica de un método de servicio web XML. Dentro del código de una EndAdd llamada se realiza al EndInvoke método y, a continuación, los resultados se colocan en el tipo de valor devuelto esperado para Add.

Se aplica a

Producto Versiones
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

Consulte también