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:
- 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 Kommandotolk på Start-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