Dela via


Gör så här: Använda en tjänstmoniker med WSDL-kontrakt

Det finns situationer när du kanske vill ha en helt fristående COM Interop-klient. Tjänsten som du vill anropa kanske inte exponerar en MEX-slutpunkt och WCF-klient-DLL:n kanske inte är registrerad för COM-interop. I dessa fall kan du skapa en WSDL-fil som beskriver tjänsten och skicka den till WCF-tjänstens moniker. Det här avsnittet beskriver hur du anropar WCF-exemplet komma igång med en WSDL-moniker med WCF.

Använda WSDL-tjänstens moniker

  1. Öppna och skapa exempellösningen GettingStarted.

  2. Öppna en webbläsare och bläddra till http://localhost/ServiceModelSamples/Service.svc för att kontrollera att tjänsten fungerar.

  3. I filen Service.cs lägger du till följande attribut i klassen 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. Lägg till ett bindningsnamnområde i tjänsten App.config:

  5. Skapa en WSDL-fil som programmet ska läsa. Eftersom namnrymderna lades till i steg 3 och 4 kan du använda en webbläsare för att fråga efter hela WSDL-beskrivningen av tjänsten genom att bläddra till http://localhost/ServiceModelSamples/Service.svc?wsdl. Du kan sedan spara filen som serviceWSDL.xml. Om du inte anger namnrymderna i steg 3 och 4 är det WSDL-dokument som returneras från att fråga ovanstående URL inte den fullständiga WSDL:en. Det WSDL-dokument som returneras innehåller flera importinstruktioner som importerar andra WSDL-dokument. Du måste gå igenom varje importuttryck och skapa det fullständiga WSDL-dokumentet genom att kombinera WSDL som returneras från tjänsten med den importerade WSDL:n.

  6. Öppna Visual Basic 6.0 och skapa en ny Standard .exe-fil. Lägg till en knapp i formuläret och dubbelklicka på knappen för att lägga till följande kod i klickhanteraren:

    ' 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)  
    

    Kommentar

    Om monikern är felaktigt formaterad eller om tjänsten inte är tillgänglig returnerar anropet till GetObject ett fel med texten "Ogiltig syntax". Om du får det här felet kontrollerar du att monikern du använder är korrekt och att tjänsten är tillgänglig.

  7. Kör Visual Basic-programmet. En meddelanderuta visas med resultatet av anropet Subtract(145, 76.54).

Se även