Gewusst wie: Verwenden eines Dienstmonikers mit WSDL-VerträgenHow to: Use a Service Moniker with WSDL Contracts

Es gibt Situationen, in denen Sie sich möglicherweise einen vollständig unabhängigen COM Interop-Client wünschen.There are situations when you may want to have a completely self-contained COM Interop client. Der Dienst, den Sie aufrufen möchten, stellt vielleicht keinen MEX-Endpunkt bereit, oder die WCF-Client-DLL ist nicht für COM-Interop registriert.The service you want to call may not expose a MEX endpoint, and the WCF client DLL may not be registered for COM interop. In diesen Fällen können Sie eine WSDL-Datei erstellen, die den Dienst beschreibt, und die Datei an den WCF-Dienstmoniker übergeben.In these cases, you can create a WSDL file that describes the service and pass it into the WCF service moniker. In diesem Thema wird beschrieben, wie das Beispiel für Erste Schritte mit WCF zur Verwendung eines WSDL-Monikers in WCF aufgerufen wird.This topic describes how to call the Getting Started WCF sample using a WCF WSDL moniker.

Verwenden des WSDL-DienstmonikersUsing the WSDL service moniker

  1. Öffnen und erstellen Sie die GettingStarted-Beispiellösung.Open and build the GettingStarted sample solution.

  2. Öffnen Sie Internet Explorer, wechseln Sie zu http://localhost/ServiceModelSamples/Service.svc, und stellen Sie sicher, dass der Dienst funktioniert.Open Internet Explorer and browse to http://localhost/ServiceModelSamples/Service.svc to make sure that the service is working.

  3. Fügen Sie in der Datei Service.cs der CalculatorService-Klasse das folgende Attribut hinzu:In the Service.cs file, add the following attribute on the CalculatorService class:

    [ServiceBehavior(Namespace = "http://Microsoft.ServiceModel.Samples")]
    // This service class implements the service contract.
    public class CalculatorService : ICalculator
    {
        public double Add(double n1, double n2)
        {
            return n1 + n2;
        }
    
        public double Subtract(double n1, double n2)
        {
            return n1 - n2;
        }
    
        public double Multiply(double n1, double n2)
        {
            return n1 * n2;
        }
    
        public double Divide(double n1, double n2)
        {
            return n1 / n2;
        }
    }
    
  4. Fügen Sie der Datei „App.config“ des Diensts einen Bindungsnamespace hinzu:Add a binding namespace to the service App.config:

  5. Erstellen Sie eine WSDL-Datei, die von der Anwendung gelesen wird.Create a WSDL file for the application to read. Da die Namespaces in den Schritten 3 und 4 hinzugefügt werden, können Sie die gesamte WSDL-Beschreibung des Dienstes in Internet Explorer abfragen, indem Sie zu http://localhost/ServiceModelSamples/Service.svc?wsdl wechseln.Because the namespaces were added in steps 3 and 4, you can use IE to query for the entire WSDL description of the service by browsing to http://localhost/ServiceModelSamples/Service.svc?wsdl. Sie können die Datei dann in Internet Explorer als serviceWSDL.xml speichern.You can then save the file from Internet Explorer as serviceWSDL.xml. Wenn Sie die Namespaces nicht in den Schritten 3 und 4 angeben, ist das von der Abfrage der obigen URL zurückgegebene WSDL-Dokument nicht vollständig.If you do not specify the namespaces in steps 3 and 4, the WSDL document returned from querying the above URL will not be the complete WSDL. Das zurückgegebene WSDL-Dokument enthält verschiedene Importanweisungen, die andere WSDL-Dokumente importieren.The WSDL document returned will include several import statements that import other WSDL documents. Sie müssen dann die einzelnen Importanweisungen durchgehen und das vollständige WSDL-Dokument erstellen, wobei Sie das vom Dienst zurückgegebene WSDL mit dem importierten WSDL kombinieren.You will have to go through each import statement and build the complete WSDL document, combining the WSDL returned from the service with the WSDL imported.

  6. Öffnen Sie Visual Basic 6.0, und erstellen Sie eine neue Standard-EXE-Datei.Open Visual Basic 6.0 and create a new Standard .exe file. Fügen Sie dem Formular eine Schaltfläche hinzu, und doppelklicken Sie darauf, um dem Click-Handler den folgenden Code hinzuzufügen.Add a button to the form and double-click the button to add the following code to the Click handler:

    ' Open the WSDL contract file and read it all into the wsdlContract string.  
    Const ForReading = 1  
    Set objFSO = CreateObject("Scripting.FileSystemObject")  
    Set objFile = objFSO.OpenTextFile("c:\serviceWsdl.xml", ForReading)  
    wsdlContract = objFile.ReadAll  
    objFile.Close  
    
    ' Create a string for the service moniker including the content of the WSDL contract file.  
    wsdlMonikerString = "service4:address='http://localhost/ServiceModelSamples/service.svc'"  
    wsdlMonikerString = wsdlMonikerString + ", wsdl='" & wsdlContract & "'"  
    wsdlMonikerString = wsdlMonikerString + ", binding=WSHttpBinding_ICalculator, bindingNamespace='http://Microsoft.ServiceModel.Samples'"  
    wsdlMonikerString = wsdlMonikerString + ", contract=ICalculator, contractNamespace='http://Microsoft.ServiceModel.Samples'"  
    
    ' Create the service moniker object.  
    Set wsdlServiceMoniker = GetObject(wsdlMonikerString)  
    
    ' Call the service operations using the moniker object.  
    MsgBox "WSDL service moniker: 145 - 76.54 = " & wsdlServiceMoniker.Subtract(145, 76.54)  
    

    Hinweis

    Ist der Moniker nicht ordnungsgemäß formatiert oder der Dienst nicht verfügbar, wird nach dem GetObject-Aufruf ein Syntaxfehler zurückgegeben. Vergewissern Sie sich bei Auftreten dieses Fehlers, dass der verwendete Moniker korrekt und der Dienst verfügbar ist.If you receive this error, make sure the moniker you are using is correct and the service is available.

  7. Führen Sie die Visual Basic-Anwendung aus.Run the Visual Basic application. Ein Meldungsfeld wird mit den Ergebnissen des Aufrufs Subtract(145, 76.54) angezeigt.A message box will be displayed with the results of calling Subtract(145, 76.54).

Siehe auchSee Also

Erste SchritteGetting Started
Übersicht über die Integration von COM-AnwendungenIntegrating with COM Applications Overview