Dela via


Felsöka självstudierna Komma igång med Windows Communication Foundation

Den här artikeln innehåller lösningar på de vanligaste problemen och felen du kan stöta på när du följer stegen i Självstudie: Kom igång med Windows Communication Foundation-program.

Vanliga problem

Jag hittar inte projektfilerna på hårddisken.

Visual Studio sparar projektfiler i C:\Users\<user name>\source\repos.

Det går inte att hitta App.config-filen som genereras av Svcutil.exe.

I Visual Studio visar fönstret Lägg till befintligt objekt endast filer med följande tillägg som standard:

  • .Cs
  • .resx
  • .Inställningar
  • .Xsd
  • .Wsdl

Om du vill visa alla filtyper väljer du Alla filer (*.*) i listrutan i det nedre högra hörnet i fönstret Lägg till befintligt objekt .

Vanliga fel

Kompilera tjänstprogrammet

Felet BC30420 "Sub Main" hittades inte i "GettingStartedHost.Module1".

Startpunkten är felaktig för Visual Basic-programmet. Gör följande ändring:

  1. I fönstret Solution Explorer väljer du mappen GettingStartedHost och väljer sedan Egenskaper på snabbmenyn. a. I fönstret GettingStartedHost för Start-objekt väljer du Service.Program (eller startpunkten för ditt specifika program) i listan. b. På huvudmenyn väljer du Spara>alla.

Kör tjänstprogrammet

DET gick inte att registrera URL:enhttp://+:8000/GettingStarted/CalculatorService för HTTP. Processen har inte åtkomstbehörighet till det här namnområdet.

För korrekt åtkomst startar du processen som är värd för WCF-tjänsten (Windows Communication Foundation) med administratörsbehörighet:

  • För Visual Studio: Välj Visual Studio-programmet på Start-menyn och välj sedan Mer>kör som administratör på snabbmenyn.
  • För ett konsolfönster: Välj KommandotolkStart-menyn och välj sedan Mer>Kör som-administratör på snabbmenyn.
  • För Utforskaren i Windows: Välj den körbara filen och välj sedan Kör som administratör på snabbmenyn.

Kompilera klientprogrammet

"CalculatorClient", innehåller ingen definition för "<metodnamn>" och ingen tilläggsmetod "<metodnamn>" som accepterar ett första argument av typen "CalculatorClient" kunde hittas (saknar du ett användningsdirektiv eller en sammansättningsreferens?)

Endast de metoder som du markerar med ServiceOperationAttribute attributet exponeras offentligt. Om du utelämnar ServiceOperationAttribute attributet från en metod i ICalculator gränssnittet visas det här felmeddelandet under kompilering.

Det gick inte att hitta typ- eller namnområdesnamnet "CalculatorClient" (saknar du ett användningsdirektiv eller en sammansättningsreferens?)

Du får det här felet om du inte lägger till filen generatedProxy.cs (eller generatedProxy.vb) i klientprojektet när du genererade dem med Svcutil.exe-verktyget .

Kör klientprogrammet

Ohanterat undantag: System.ServiceModel.EndpointNotFoundException: Det gick inte att ansluta tillhttp://localhost:8000/GettingStarted/CalculatorService . TCP-felkod 10061: Det gick inte att upprätta någon anslutning eftersom måldatorn aktivt nekade den.

Det här felet uppstår om du kör klientprogrammet utan att först starta tjänsten. Kör först värdprogrammet för att starta tjänsten och kör sedan klientprogrammet.

Använda verktyget Svcutil.exe

"Svcutil" känns inte igen som ett internt eller externt kommando, ett fungerande program eller en batchfil.

Svcutil.exe måste finnas i systemsökvägen. Den enklaste lösningen är att använda Visual Studio-kommandotolken. På Start-menyn väljer du katalogen Visual Studio-version <> och väljer sedan Developer Command Prompt for VS version (Developer Command Prompt for VS <version>). Den här kommandotolken anger systemsökvägen till rätt platser för alla verktyg som levereras som en del av Visual Studio.

Köra tjänst- och klientprogram

System.ServiceModel.Security.SecurityNegotiationException: SOAP-säkerhetsförhandlingen med "http://localhost:8000/GettingStarted/CalculatorService" för målet "http://localhost:8000/GettingStarted/CalculatorService" misslyckades

Det här felet uppstår på en domänansluten dator som inte har någon nätverksanslutning. Anslut datorn till nätverket eller inaktivera säkerheten för både tjänsten och klienten.

Så här inaktiverar du säkerhet:

  • För tjänsten ersätter du koden som skapar WSHttpBinding med följande kod:

    // Step 3: Add a service endpoint.
    selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");  
    
  • För klienten uppdaterar <du säkerhetselementet> under <bindningselementet> i konfigurationsfilen på följande sätt:

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

Se även

Kom igång med WCF-program
Snabbstart för felsökning av WCF
Felsöka installationsproblem