Řešení potíží s kurzy Začínáme se službou Windows Communication Foundation
Tento článek obsahuje řešení nejběžnějších problémů a chyb, se kterými se můžete setkat při použití kroků v kurzu Začínáme s aplikacemi Windows Communication Foundation.
Běžné problémy
Nemůžu najít soubory projektu na pevném disku.
Visual Studio ukládá soubory projektu do složky C:\Users\<uživatelské jméno>\zdroj\repos.
Nemůžu najít soubor App.config vygenerovaný Svcutil.exe.
V sadě Visual Studio se v okně Přidat existující položku ve výchozím nastavení zobrazují jenom soubory s následujícími příponami:
- .Cs
- .resx
- .Nastavení
- .Xsd
- .Wsdl
Pokud chcete zobrazit všechny typy souborů, vyberte v rozevíracím seznamu v pravém dolním rohu okna Přidat existující položkumožnost Všechny soubory (*.*).
Běžné chyby
Kompilace aplikace služby
Chyba BC30420 Sub Main nebyla v GettingStartedHost.Module1 nalezena.
Vstupní bod je nesprávný pro aplikaci jazyka Visual Basic. Proveďte následující změnu:
- V okně Průzkumník řešení vyberte složku GettingStartedHost a pak v místní nabídce vyberte Vlastnosti. a. V okně GettingStartedHost jako Spouštěcí objekt vyberte ze seznamu Service.Program (nebo vstupní bod pro vaši konkrétní aplikaci). b. V hlavní nabídce vyberte Soubor>Uložit vše.
Spuštění aplikace služby
Protokol HTTP nemohl zaregistrovat adresu URL .http://+:8000/GettingStarted/CalculatorService Váš proces nemá přístupová práva k tomuto oboru názvů.
Pokud chcete získat správný přístup, spusťte proces hostující službu Windows Communication Foundation (WCF) s oprávněními správce:
- Visual Studio: V nabídce Start vyberte program Visual Studio a pak v místní nabídce vyberte Další možnosti>Spustit jako správce .
- Pro okno konzoly: V nabídce Start vyberte Příkazový řádek a pak v místní nabídce vyberte Další možnosti>Spustit jako správce.
- Průzkumník Windows: Vyberte spustitelný soubor a pak v místní nabídce vyberte Spustit jako správce .
Kompilace klientské aplikace
CalculatorClient neobsahuje definici pro "<název> metody" a nebyla nalezena žádná rozšiřující metoda "<název> metody", která přijímá první argument typu CalculatorClient (chybí vám direktiva using nebo odkaz na sestavení?).
Veřejně jsou zpřístupněny pouze metody, které označíte atributem ServiceOperationAttribute
. Pokud vynecháte ServiceOperationAttribute
atribut z metody v ICalculator
rozhraní, během kompilace se zobrazí tato chybová zpráva.
Nelze najít název typu nebo oboru názvů CalculatorClient (chybí vám direktiva using nebo odkaz na sestavení?).
Tato chyba se zobrazí, pokud do klientského projektu nepřidáte soubor generatedProxy.cs (nebo generatedProxy.vb), když jste ho vygenerovali pomocí nástrojeSvcutil.exe .
Spuštění klientské aplikace
Neošetřená výjimka: System.ServiceModel.EndpointNotFoundException: Nepodařilo se připojit k .http://localhost:8000/GettingStarted/CalculatorService Kód chyby PROTOKOLU TCP 10061: Nelze vytvořit žádné připojení, protože cílový počítač ho aktivně odmítl.
K této chybě dochází, pokud spustíte klientskou aplikaci bez spuštění služby. Nejprve spusťte hostitelskou aplikaci, aby se služba spustila, a pak spusťte klientskou aplikaci.
Použití nástroje Svcutil.exe
Svcutil není rozpoznán jako interní nebo externí příkaz, spustitelný program nebo dávkový soubor.
Svcutil.exe musí být v systémové cestě. Nejjednodušším řešením je použít příkazový řádek sady Visual Studio. V nabídce Start vyberte adresář verze> sady Visual Studio a pak vyberte Developer Command Prompt pro verzi sady Visual Studio <<.> Tento příkazový řádek nastaví systémovou cestu na správná umístění pro všechny nástroje dodávané jako součást sady Visual Studio.
Spuštění služby a klientských aplikací
System.ServiceModel.Security.SecurityNegotiationException: Vyjednávání zabezpečení SOAP s objektem prohttp://localhost:8000/GettingStarted/CalculatorService cíl sehttp://localhost:8000/GettingStarted/CalculatorService nezdařilo.
K této chybě dochází na počítači připojeném k doméně, který nemá připojení k síti. Připojte počítač k síti nebo vypněte zabezpečení služby i klienta.
Vypnutí zabezpečení:
Pro službu nahraďte kód, který vytvoří
WSHttpBinding
, následujícím kódem:// Step 3: Add a service endpoint. selfhost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(SecurityMode.None), "CalculatorService");
V případě klienta aktualizujte <v konfiguračním souboru element zabezpečení> v elementu <binding> následujícím způsobem:
<binding name="WSHttpBinding_ICalculator"> <security mode="None" /> </binding>
Viz také
Začínáme s aplikacemi WCF
Rychlý start pro řešení potíží s WCF
Řešení potíží s nastavením