Auf Englisch lesen

Freigeben über


SoapHttpClientProtocol.BeginInvoke Methode

Definition

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

C#
protected IAsyncResult BeginInvoke(string methodName, object[] parameters, AsyncCallback callback, object asyncState);

Parameter

methodName
String

Der Name der XML-Webdienstmethode in der abgeleiteten Klasse, die die BeginInvoke(String, Object[], AsyncCallback, Object)-Methode aufruft.

parameters
Object[]

Ein Array von Objekten mit den Parametern, die an den XML-Webdienst übergeben werden sollen. Die Reihenfolge der Werte im Array entspricht der Reihenfolge der Parameter in der Aufrufmethode der abgeleiteten Klasse.

callback
AsyncCallback

Der Delegat, der aufgerufen werden soll, wenn der asynchrone Aufruf abgeschlossen ist. Wenn callback auf null festgelegt ist, wird der Delegat nicht aufgerufen.

asyncState
Object

Zusätzliche vom Aufrufer bereitgestellte Informationen.

Gibt zurück

Ein IAsyncResult, das an die EndInvoke(IAsyncResult)-Methode übergeben wird, um die Rückgabewerte des Remotemethodenaufrufs abzurufen.

Ausnahmen

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 vom Web Services Description Language-Tool (Wsdl.exe) für den Math XML-Webdienst generiert wird. Innerhalb der BeginAdd -Methode der Proxyklasse startet die BeginInvoke -Methode einen asynchronen Aufruf für die Add XML-Webdienstmethode.

C#

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.

ASP.NET (C#)
<%@ 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 rufen Sie die BeginInvoke Methode nicht direkt auf, es sei denn, Sie erstellen eine eigene Proxyklasse für einen XML-Webdienst.

Eine Proxyklasse, die vom Web Services Description Language-Tool (Wsdl.exe) aus einer Dienstbeschreibung generiert wird, macht die XML-Webdienstmethoden als Namen verfügbar, die von der Proxyklasse abgeleitet werden, um die XML-Webdienstmethoden synchron aufzurufen. Um die XML-Webdienstmethoden asynchron aufzurufen, werden der Proxyklasse für jede XML-Webdienstmethode zwei zusätzliche Methoden hinzugefügt: eine mit dem Begin Präfix zum Namen der XML-Webdienstmethode und eine mit dem hinzugefügten End Präfix.

Die Proxyklasse ruft die BeginInvoke -Methode auf, um einen asynchronen Aufruf der XML-Webdienstmethode zu starten. Wenn beispielsweise ein XML-Webdienst eine XML-Webdienstmethode mit dem Namen Addverfügbar macht, enthält die Proxyklasse eine Methode namens BeginAdd, um einen Aufruf für die XML-Webdienstmethode zu starten. Im Code für wird ein Aufruf der BeginAddBeginInvoke -Methode ausgeführt, und die Ergebnisse werden in den erwarteten Rückgabetyp für Addplatziert.

Wird methodName verwendet, um die benutzerdefinierten Attribute zu finden, die der -Methode möglicherweise hinzugefügt wurden, z. B SoapDocumentMethodAttribute. . SoapDocumentMethodAttribute stellt zusätzliche Informationen zur abgeleiteten Methode bereit, die für das SOAP-Protokoll erforderlich ist.

asyncState wird an callback übergeben und ist in der enthalten, die IAsyncResult von der BeginInvoke -Methode zurückgegeben wird. Der asyncState Parameter kann verwendet werden, um Informationen über den Kontext des asynchronen Aufrufs, der im Parameter angegeben ist, an den callback Delegaten zu übergeben, der das Ergebnis verarbeitet.

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