Kompilowanie przykładów programu Windows Communication Foundation
Przykłady programu Windows Communication Foundation (WCF) można skompilować przy użyciu środowiska IDE programu Visual Studio lub polecenia msbuild z wiersza polecenia. Obie procedury zostały opisane w tym artykule.
Uwaga
Przed utworzeniem lub uruchomieniem dowolnego przykładu programu WCF upewnij się, że wykonano procedurę instalacji jednorazowej dla przykładów programu Windows Communication Foundation.
Aby skompilować przykład przy użyciu wiersza polecenia
Otwórz wiersz polecenia dewelopera dla programu Visual Studio i przejdź do podkatalogu specyficznego dla języka w lokalizacji katalogu, w której zainstalowano przykład.
Wpisz
msbuild
polecenie w wierszu polecenia. Pliki programu klienta są kompilowane do pliku client\bin , a pliki programu usługi są kompilowane w usłudze\bin. Jeśli usługa jest hostowana przez usługi Internet Information Services (IIS), pliki programu usługi są również kopiowane do katalogu servicemodelsamples i jego podkatalogu \bin .
Uwaga
Należy ustawić listy ACL w folderze %systemdrive%\inetpub\wwwroot , aby udzielić uprawnień modyfikacji do konta, na którym jest uruchomiona. W przeciwnym razie niektóre zdarzenia po kompilacji kończą się niepowodzeniem. Alternatywnie możesz pozostawić listy ACL, ponieważ są i uruchomić wiersz polecenia zestawu SDK jako administrator.
Aby skompilować przykład przy użyciu programu Visual Studio
W menu Plik w programie Visual Studio wybierz pozycję Otwórz>projekt/rozwiązanie. Przejdź do podkatalogu specyficznego dla języka w katalogu, w którym zainstalowano przykład, i kliknij dwukrotnie ikonę pliku .sln, aby otworzyć rozwiązanie w programie Visual Studio.
W menu Kompilacja wybierz pozycję Skompiluj rozwiązanie.
Pliki programu klienta są kompilowane do pliku client\bin, a pliki programu usługi są kompilowane w usłudze\bin. Jeśli usługa jest hostowana w usługach IIS, pliki programu usługi są również kopiowane do katalogu servicemodelsamples i jego podkatalogu \bin .
Uwaga
Należy ustawić listy ACL w folderze %systemdrive%\inetpub\wwwroot, aby udzielić uprawnień modyfikacji do konta, na którym jest uruchomiona. W przeciwnym razie niektóre zdarzenia po kompilacji kończą się niepowodzeniem. Alternatywnie możesz pozostawić listy ACL, ponieważ są i uruchomić wiersz polecenia zestawu SDK lub Visual Studio jako administrator. Niektóre akcje programu Visual Studio (takie jak dołączanie debugera do procesu roboczego ASP.NET) również wymagają uprawnień administracyjnych.
Konfigurowanie plików i skryptów usługi Batch
Setup.exe i Cleanup.exe pliki i skrypty wsadowe powinny być uruchamiane z poziomu wiersza polecenia dewelopera dla programu Visual Studio. Kilka konfiguracji i czyszczenia plików wykonuje zadania wymagające uprawnień administracyjnych i powinny być uruchamiane z uprawnieniami administratora.
Ważne informacje o zabezpieczeniach dotyczące punktów końcowych metadanych
Aby zapobiec przypadkowemu ujawnieniu potencjalnie poufnych metadanych usługi, domyślna konfiguracja usług Windows Communication Foundation (WCF) wyłącza publikowanie metadanych. To zachowanie jest domyślnie bezpieczne, ale oznacza również, że nie można użyć narzędzia importowania metadanych (takiego jak Svcutil.exe), aby wygenerować kod klienta wymagany do wywołania usługi, chyba że zachowanie publikowania metadanych usługi jest jawnie włączone w konfiguracji. Aby ułatwić eksperymentowanie z przykładami, prawie wszystkie próbki uwidacznia niezabezpieczony punkt końcowy publikowania metadanych. Takie punkty końcowe są potencjalnie dostępne dla anonimowych nieuwierzytelnionych użytkowników i należy zachować ostrożność przed wdrożeniem takich punktów końcowych, aby zapewnić, że publiczne ujawnienie metadanych usługi jest odpowiednie. Aby uzyskać więcej informacji na temat publikowania metadanych usługi, zobacz przykład Zachowanie publikowania metadanych. Zapoznaj się z przykładem niestandardowego bezpiecznego punktu końcowego metadanych, aby zapoznać się z przykładem zabezpieczania punktu końcowego metadanych.
Obsługa wyjątków
Ogólnie rzecz biorąc, te przykłady nie obejmują obsługi wyjątków, aby kod był skoncentrowany na temacie próbki. Aby uzyskać więcej informacji na temat obsługi wyjątków, zobacz przykład Oczekiwane wyjątki .
Ponowne generowanie klientów i konfiguracja za pomocą narzędzia Svcutil
Możesz użyć narzędzia ServiceModel Metadata Tool (Svcutil.exe), aby ponownie wygenerować kod klienta i konfigurację dla większości przykładów. Niektóre przykłady wymagają ręcznej edycji konfiguracji. Jeśli na przykład używasz Svcutil.exe do ponownego wygenerowania konfiguracji dla przykładu korzystającego z poświadczeń certyfikatu klienta, musisz ręcznie określić wcześniej skonfigurowane poświadczenia. Niektóre przykłady używają określonych Svcutil.exe opcji, aby wpłynąć na wygenerowany kod. Te opcje są określone w określonych przykładowych tematach.
Aby ponownie wygenerować pliki klienta i konfiguracji
Otwórz wiersz polecenia zestawu SDK i przejdź do podkatalogu specyficznego dla języka w lokalizacji katalogu, w której zainstalowano przykład.
Jeśli usługa jest typem hostowanym w sieci Web, użyj następującego polecenia.
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /out:generatedClient.cs
Jeśli usługa jest własnym typem, wpisz następujące polecenie.
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /out:generatedClient.cs
Zastąp
http://localhost:8000/ServiceModelSamples/service.svc/mex
ciąg adresem punktu końcowego mex samoobsługi.Aby wygenerować klienta w typie języka Visual Basic, użyj następującego polecenia.
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
Jeśli usługa jest własnym typem, użyj następującego polecenia.
svcutil.exe /n:"http://Microsoft.ServiceModel.Samples,Microsoft.ServiceModel.Samples" http://localhost:8000/servicemodelsamples/service.svc/mex /l:vb /out:generatedClient.vb
Uwaga
Aby pominąć generowanie konfiguracji klienta, dodaj /noConfig opcji.