Pri vývoji nového projektu s využitím asp.net jadrovej technológie môže byť starý projekt WCF službou vyvinutú pomocou .NET Framework 4, pretože náklady na rekonštrukciu sú príliš vysoké, je potrebné použiť asp.net jadro na volanie rozhrania služby WCF.
Najprv vytvorte 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 vytvoriť WCF službu, nemôžem nájsť šablónu, riešenie:
Vyberte Nainštalovať viac nástrojov a funkcií na otvorenie inštalátora Visual Studio. Vyberte záložku Jednotlivé komponenty, posuňte sa nižšie na Vývojové aktivity, vyberte Windows Communication Foundation a kliknite na Modifikovať.
WCF vytvára dve rozhrania nasledovne:
Kód implementácie rozhrania je nasledovný:
Servisná zmluva je súbor súvisiacich servisných operácií a keď aplikujeme ServiceContractAttribute na rozhranie, pridelíme mu atribút servisnej zmluvy. Avšak pre takýto typ sa jeho idiom automaticky nestáva zmluvnou servisnou operáciou a až keď sa aplikuje funkcia OperationContractAttributes, sa príslušný člen metódy môže stať servisnou operáciou, ku ktorej je možné pristupovať servisným volaním.
Keď spustíte wcf projekt, automaticky spustí WcfTestClient a pokúsi sa ho zavolať, ako je znázornené na obrázku nižšie:
Použite ASP.NET Core projekty na volanie služieb WCF
Kliknite pravým tlačidlom na Pripojené služby, vyberte službu, ku ktorej chcete pridať pripojenie, a vyberte službu WCF, ako je znázornené na nasledujúcom obrázku:
Adresa služby vyplnená: http://localhost:3705/Service1.svc
Možné chyby:
Keďže nie je možné zapísať adresu služby WCF do smrti, pridajte do appsettings.json súboru nasledujúci kód:
Upravte Startup.cs súbor a zaregistrujte službu WCF s nasledujúcim kódom:
Zavolajte službu wcf na radiči HomeController, prvá injekcia konštruktora, kód je nasledovný:
Volanie služby WCF:
Prevádzkujte webovú stránku asp.net Core, efekt je zobrazený nižšie:
Snažíme sa upraviť službu WCF tak, aby rozhranie vrátilo výsledok po 3 minútach, a potom reštartujeme asp.net jadro na zavolanie služby WCF, pričom chyba je nasledovná:
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 tejto chvíli potrebujeme upraviť predvolený časový limit, prispôsobiť viazanie BasicHttpBinding a znovu upraviť Startup.cs súbor, nasledovne:
Stiahnutie zdrojového kódu:
Turisti, ak chcete vidieť skrytý obsah tohto príspevku, prosím. Odpoveď
|