Instrukcje: Używanie krótkiej nazwy z kontraktami WSDL
Istnieją sytuacje, w których może być potrzebny całkowicie samodzielny klient międzyoperacyjności MODELU COM. Usługa, którą chcesz wywołać, może nie uwidocznić punktu końcowego MEX, a biblioteka DLL klienta programu WCF może nie zostać zarejestrowana dla międzyoperajności modelu COM. W takich przypadkach można utworzyć plik WSDL opisujący usługę i przekazać go do nazwy moniker usługi WCF. W tym temacie opisano sposób wywoływania przykładu Getting Started WCF przy użyciu pseudonimu WSDL WCF.
Używanie nazwy moniker usługi WSDL
Otwórz i skompiluj przykładowe rozwiązanie GettingStarted.
Otwórz przeglądarkę i przejdź do witryny , aby
http://localhost/ServiceModelSamples/Service.svc
upewnić się, że usługa działa.W pliku Service.cs dodaj następujący atrybut w klasie 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; } }
Dodaj przestrzeń nazw powiązania do pliku App.config usługi:
Utwórz plik WSDL, który ma zostać odczytany przez aplikację. Ponieważ przestrzenie nazw zostały dodane w krokach 3 i 4, możesz użyć przeglądarki do wykonywania zapytań dotyczących całego opisu WSDL usługi, przechodząc do
http://localhost/ServiceModelSamples/Service.svc?wsdl
strony . Następnie możesz zapisać plik jako serviceWSDL.xml. Jeśli nie określisz przestrzeni nazw w krokach 3 i 4, dokument WSDL zwrócony z wykonywania zapytania o powyższy adres URL nie będzie kompletnym plikiem WSDL. Zwrócony dokument WSDL będzie zawierać kilka instrukcji importu, które importują inne dokumenty WSDL. Musisz przejść przez każdą instrukcję import i skompilować kompletny dokument WSDL, łącząc plik WSDL zwrócony z usługi z zaimportowaną usługą WSDL.Otwórz program Visual Basic 6.0 i utwórz nowy plik .exe w warstwie Standardowa. Dodaj przycisk do formularza i kliknij dwukrotnie przycisk, aby dodać następujący kod do programu obsługi kliknięć:
' 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)
Uwaga
Jeśli moniker jest źle sformułowany lub jeśli usługa jest niedostępna, wywołanie
GetObject
metody zwróci błąd z komunikatem "Nieprawidłowa składnia". Jeśli wystąpi ten błąd, upewnij się, że używany pseudonim jest poprawny i usługa jest dostępna.Uruchom aplikację Visual Basic. Zostanie wyświetlone okno komunikatu z wynikami wywołania metody Subtract(145, 76.54).