SoapHttpClientProtocol.EndInvoke(IAsyncResult) Methode

Definition

Beendet den asynchronen Aufruf einer XML-Webdienstmethode unter Verwendung von SOAP.

protected object[] EndInvoke(IAsyncResult asyncResult);

Parameter

asyncResult
IAsyncResult

Das von der IAsyncResult-Methode zurückgegebene BeginInvoke(String, Object[], AsyncCallback, Object).

Gibt zurück

Object[]

Ein Array von Objekten mit dem Rückgabewert und allen durch Verweis übergebenen Parametern oder out-Parametern der abgeleiteten Klassenmethode.

Ausnahmen

asyncResult ist nicht der Rückgabewert aus der BeginInvoke(String, Object[], AsyncCallback, Object)-Methode.

Die Anforderung hat den Servercomputer erreicht, wurde jedoch nicht erfolgreich verarbeitet.

Die Anforderung war nicht gültig für den aktuellen Zustand des Objekts.

Fehler beim Zugriff auf das Netzwerk.

Beispiele

Das folgende Codebeispiel ist eine Proxyklasse, die von Wsdl.exe für den Math XML-Webdienst generiert wird. Innerhalb der EndAdd -Methode der Proxyklasse schließt die EndInvoke -Methode den asynchronen Aufruf der Add XML-Webdienstmethode ab.


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]));
        }
    }
}

Das folgende Codebeispiel ist der Math XML-Webdienst, aus dem die vorherige Proxyklasse erstellt wurde.

<%@ 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;
          }
 }

Hinweise

In der Regel würden Sie die EndInvoke -Methode nicht direkt aufrufen, es sei denn, Sie haben eine eigene Proxyklasse für einen XML-Webdienst erstellt.

Eine Proxyklasse, die vom Web Services Description Language-Tool (Wsdl.exe) für einen XML-Webdienst generiert wird, macht die XML-Webdienstmethoden als Namen aus der Proxyklasse verfügbar, um die XML-Webdienstmethoden synchron aufzurufen. Zum asynchronen Aufrufen der XML-Webdienstmethoden werden der Proxyklasse für jede XML-Webdienstmethode zwei zusätzliche Methoden hinzugefügt: eine mit dem Begin Präfix, das dem Namen der XML-Webdienstmethode hinzugefügt wurde, und eine mit dem hinzugefügten End Präfix.

Die Proxyklasse ruft die EndInvoke -Methode auf, um einen asynchronen Aufruf der XML-Webdienstmethode abzuschließen. Wenn beispielsweise ein XML-Webdienst eine XML-Webdienstmethode mit dem Namen Addverfügbar macht, enthält die Proxyklasse eine Methode namens EndAdd, um einen asynchronen Aufruf einer XML-Webdienstmethode abzuschließen. Innerhalb des Codes für wird EndAdd ein Aufruf der EndInvoke -Methode durchgeführt, und dann werden die Ergebnisse in den erwarteten Rückgabetyp für Addplatziert.

Gilt für:

Produkt Versionen
.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

Weitere Informationen