Při vývoji nového projektu s využitím asp.net základní technologie může být starý projekt WCF službou vyvinutou pomocí .NET Framework 4, protože náklady na rekonstrukci jsou příliš vysoké, je nutné použít asp.net jádro k volání rozhraní služby WCF.
Nejprve vytvořte dva nové projekty:
ASP.NET Projekt Core 3.1: dotnet-core-call-wcf .NET Framework 4 projekt (WCF service application): schools-wcf-service
Visual Studio 2019 chce vytvořit WCF službu, nemohu najít šablonu, řešení:
Vyberte Nainstalovat více nástrojů a funkcí pro otevření instalátoru Visual Studia. Vyberte záložku Jednotlivé komponenty, sjeďte dolů na Vývojové aktivity, vyberte Windows Communication Foundation a klikněte na Upravit.
WCF vytváří dvě rozhraní následovně:
Kód implementace rozhraní je následující:
Servisní smlouva je soubor souvisejících servisních operací a když aplikujeme ServiceContractAttribute na rozhraní, přidělíme mu atribut servisní smlouvy. Nicméně u takového typu se jeho idiom automaticky nestává smluvní servisní operací a teprve při aplikaci funkce OperationContractAttribute se příslušný člen metody může stát servisní operací, ke které lze přistupovat servisním voláním.
Když spustíte projekt WCF, automaticky spustí WcfTestClient a pokusí se ho zavolat, jak je znázorněno na obrázku níže:
Použijte ASP.NET Core projekty k volání služeb WCF
Klikněte pravým tlačítkem na Connected Services, vyberte službu, ke které chcete přidat připojení, a vyberte službu WCF, jak je znázorněno na následujícím obrázku:
Adresa služby vyplněna: http://localhost:3705/Service1.svc
Možné chyby:
Protože není možné zapsat adresu WCF služby do smrti, přidejte do appsettings.json souboru následující kód:
Upravte soubor Startup.cs a zaregistrujte službu WCF s následujícím kódem:
Zavolejte službu wcf na řadiči HomeController, první injekce konstruktoru, kód je následující:
Volání na službu WCF:
Provozujte web asp.net Core, efekt je zobrazen níže:
Snažíme se upravit službu WCF tak, aby rozhraní vrátilo výsledek po 3 minutách, a poté restartujeme asp.net jádro pro volání služby WCF a chyba je následující:
AggregateException: One or more errors occurred. (The request channel timed out attempting to send after 00:01:00. Increase the timeout value passed to the call to Request or increase the SendTimeout value on the Binding. The time allotted to this operation may have been a portion of a longer timeout.) V tuto chvíli musíme upravit výchozí časový limit, přizpůsobit vazbu BasicHttpBinding a znovu upravit Startup.cs soubor, a to následovně:
Stažení zdrojového kódu:
Turisté, pokud chcete vidět skrytý obsah tohoto příspěvku, prosím Odpověď
|