Udostępnij za pośrednictwem


Rozwiązywanie problemów z samouczkami Rozpoczynanie pracy z programem Windows Communication Foundation

Ten artykuł zawiera rozwiązania najczęstszych problemów i błędów, które mogą wystąpić podczas wykonywania kroków opisanych w artykule Samouczek: rozpoczynanie pracy z aplikacjami Windows Communication Foundation.

Typowe problemy

Nie mogę znaleźć plików projektu na moim dysku twardym.

Program Visual Studio zapisuje pliki projektu w folderze C:\Users\<user name>\source\repos.

Nie mogę znaleźć pliku App.config wygenerowanego przez Svcutil.exe.

W programie Visual Studio w oknie Dodawanie istniejącego elementu domyślnie są wyświetlane tylko pliki z następującymi rozszerzeniami:

  • .Cs
  • .resx
  • .Ustawienia
  • .Xsd
  • .Wsdl

Aby wyświetlić wszystkie typy plików, wybierz pozycję Wszystkie pliki (*.*) z listy rozwijanej w prawym dolnym rogu okna Dodaj istniejący element .

Typowe błędy

Kompilowanie aplikacji usługi

Nie znaleziono błędu BC30420 "Sub Main" w elemecie "GettingStartedHost.Module1".

Punkt wejścia jest niepoprawny dla aplikacji Visual Basic. Wprowadź następującą zmianę:

  1. W oknie Eksplorator rozwiązań wybierz folder GettingStartedHost, a następnie wybierz pozycję Właściwości z menu skrótów. a. W oknie GettingStartedHost w polu Obiekt startowy wybierz pozycję Service.Program (lub punkt wejścia dla określonej aplikacji) z listy. b. Z menu głównego wybierz pozycję Plik>Zapisz wszystko.

Uruchamianie aplikacji usługi

Protokół HTTP nie może zarejestrować adresu URL "http://+:8000/GettingStarted/CalculatorService". Proces nie ma praw dostępu do tej przestrzeni nazw.

Aby uzyskać odpowiedni dostęp, uruchom proces hostowania usługi Windows Communication Foundation (WCF) z uprawnieniami administracyjnymi:

  • W programie Visual Studio: wybierz program Visual Studio w menu Start , a następnie wybierz pozycję Więcej>Uruchom jako administrator z menu skrótów.
  • W oknie konsoli: wybierz pozycję Wiersz polecenia w menu Start , a następnie wybierz pozycję Więcej>Uruchom jako administrator z menu skrótów.
  • W Eksploratorze Windows: wybierz plik wykonywalny, a następnie wybierz polecenie Uruchom jako administrator z menu skrótów.

Kompilowanie aplikacji klienckiej

Element "CalculatorClient" nie zawiera definicji metody "<nazwa> metody" i nie można odnaleźć metody rozszerzenia "<nazwa> metody" akceptującej pierwszy argument typu "CalculatorClient" (czy brakuje dyrektywy using lub odwołania do zestawu?)

Tylko te metody, które oznaczysz za pomocą atrybutu ServiceOperationAttribute , są publicznie uwidocznione. ServiceOperationAttribute Jeśli pominięto atrybut z metody w interfejsieICalculator, podczas kompilacji zostanie wyświetlony ten komunikat o błędzie.

Nie można odnaleźć nazwy typu lub przestrzeni nazw "CalculatorClient" (czy brakuje dyrektywy using lub odwołania do zestawu?)

Ten błąd występuje, jeśli nie dodasz pliku generatedProxy.cs (lub generatedProxy.vb) do projektu klienta podczas generowania ich za pomocą narzędzia Svcutil.exe .

Uruchamianie aplikacji klienckiej

Nieobsługiwany wyjątek: System.ServiceModel.EndpointNotFoundException: Nie można nawiązać połączenia z elementem "http://localhost:8000/GettingStarted/CalculatorService". Kod błędu TCP 10061: Nie można nawiązać połączenia, ponieważ maszyna docelowa aktywnie go odmówiła.

Ten błąd występuje w przypadku uruchomienia aplikacji klienckiej bez wcześniejszego uruchomienia usługi. Najpierw uruchom aplikację hosta, aby uruchomić usługę, a następnie uruchom aplikację kliencą.

Korzystanie z narzędzia Svcutil.exe

Polecenie "Svcutil" nie jest rozpoznawane jako wewnętrzne lub zewnętrzne polecenie, program do obsługi lub plik wsadowy.

Svcutil.exe musi znajdować się w ścieżce systemowej. Najprostszym rozwiązaniem jest użycie wiersza polecenia programu Visual Studio. W menu Start wybierz katalog wersji> programu Visual Studio<, a następnie wybierz pozycję Wiersz polecenia dewelopera dla wersji programu> VS<. Ten wiersz polecenia ustawia ścieżkę systemową do poprawnych lokalizacji dla wszystkich narzędzi dostarczanych w ramach programu Visual Studio.

Uruchamianie usługi i aplikacji klienckich

System.ServiceModel.Security.SecurityNegotiationException: negocjowanie zabezpieczeń protokołu SOAP z elementem "http://localhost:8000/GettingStarted/CalculatorService" dla elementu docelowego "http://localhost:8000/GettingStarted/CalculatorService" nie powiodło się

Ten błąd występuje na komputerze przyłączonym do domeny, który nie ma łączności sieciowej. Połącz komputer z siecią lub wyłącz zabezpieczenia zarówno dla usługi, jak i klienta.

Aby wyłączyć zabezpieczenia:

  • W przypadku usługi zastąp kod, który tworzy WSHttpBinding element następującym kodem:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • W przypadku klienta w pliku konfiguracji zaktualizuj <element zabezpieczeń> w ramach <elementu powiązania> w następujący sposób:

    <binding name="WSHttpBinding_ICalculator">
      <security mode="None" />
    </binding>
    

Zobacz też

Wprowadzenie do aplikacji WCF
Przewodnik Szybki start dotyczący rozwiązywania problemów z usługą WCF
Rozwiązywanie problemów z konfiguracją