Delen via


Procedure: Een service moniker gebruiken met WSDL-contracten

Er zijn situaties waarin u mogelijk een volledig zelfstandige COM Interop-client wilt hebben. De service die u wilt aanroepen, maakt mogelijk geen MEX-eindpunt beschikbaar en het DLL-bestand van de WCF-client is mogelijk niet geregistreerd voor COM-interoperabiliteit. In deze gevallen kunt u een WSDL-bestand maken dat de service beschrijft en doorgeeft aan de WCF-service moniker. In dit onderwerp wordt beschreven hoe u het WCF-voorbeeld Aan de slag aanroept met behulp van een WCF WSDL-moniker.

De WSDL-service moniker gebruiken

  1. Open de voorbeeldoplossing GettingStarted en bouw deze.

  2. Open een browser en blader om http://localhost/ServiceModelSamples/Service.svc te controleren of de service werkt.

  3. Voeg in het bestand Service.cs het volgende kenmerk toe aan de klasse CalculatorService:

    [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. Voeg een bindingsnaamruimte toe aan de service-app.config:

  5. Maak een WSDL-bestand dat door de toepassing kan worden gelezen. Omdat de naamruimten zijn toegevoegd in stap 3 en 4, kunt u een browser gebruiken om een query uit te voeren voor de volledige WSDL-beschrijving van de service door naar te http://localhost/ServiceModelSamples/Service.svc?wsdlbladeren. Vervolgens kunt u het bestand opslaan als serviceWSDL.xml. Als u de naamruimten in stap 3 en 4 niet opgeeft, is het WSDL-document dat wordt geretourneerd door het uitvoeren van een query op de bovenstaande URL niet de volledige WSDL. Het geretourneerde WSDL-document bevat verschillende importinstructies waarmee andere WSDL-documenten worden geïmporteerd. U moet elke importinstructie doorlopen en het volledige WSDL-document maken, waarbij de WSDL die is geretourneerd uit de service wordt gecombineerd met de geïmporteerde WSDL.

  6. Open Visual Basic 6.0 en maak een nieuw Standard .exe-bestand. Voeg een knop toe aan het formulier en dubbelklik op de knop om de volgende code toe te voegen aan de klik-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)  
    

    Notitie

    Als de moniker ongeldig is of als de service niet beschikbaar is, retourneert de aanroep GetObject een fout met de tekst 'Ongeldige syntaxis'. Als u deze fout ontvangt, controleert u of de moniker die u gebruikt juist is en of de service beschikbaar is.

  7. Voer de Visual Basic-toepassing uit. Er wordt een berichtvenster weergegeven met de resultaten van het aanroepen van aftrekken(145, 76,54).

Zie ook