Uue projekti arendamisel, kasutades asp.net põhitehnoloogiat, võib vana projekt olla WCF teenus, mis on arendatud .NET Framework 4 abil, kuna rekonstrueerimiskulu on liiga kõrge, tuleb kasutada asp.net tuuma WCF teenuseliidese kutsumiseks.
Esiteks loo kaks uut projekti:
ASP.NET Core 3.1 projekt: dotnet-core-call-wcf .NET Framework 4 projekt (WCF teenuse rakendus): koolid-wcf-teenindus
Visual Studio 2019 soovib luua WCF teenust, ei leia malli, lahendus:
Vali Installi rohkem tööriistu ja funktsioone, et avada Visual Studio Installer. Vali vahekaart Individuaalkomponendid, kerige alla arendustegevustesse, valige Windows Communication Foundation ja klõpsake Muuda.
WCF loob kaks liidest järgmiselt:
Liidese rakenduskood on järgmine:
Teenuseleping on seotud teenuseoperatsioonide kogum ning kui me rakendame ServiceContractAttribute'i liideses, anname sellele teenuselepingu atribuudi. Kuid sellise tüübi puhul ei muutu selle idioom automaatselt lepinguliseks teenuseoperatsiooniks ning ainult siis, kui rakendatakse OperationContractAttribute omadust, võib vastav meetodi liige muutuda teenuseoperatsiooniks, millele pääseb ligi teenusekutse kaudu.
Kui alustad wcf projekti, käivitab see automaatselt WcfTestClienti ja proovib seda kutsuda, nagu alloleval joonisel näidatud:
Kasuta ASP.NET Core projekte, et kutsuda WCF teenuseid
Paremklõpsuga Connected Services, vali teenus, millele soovid ühendust lisada, ja vali WCF teenus, nagu näidatud järgmisel pildil:
Teenuse aadress täidetud: http://localhost:3705/Service1.svc
Võimalikud vead:
Kuna WCF teenuse aadressi surnuks kirjutamine on võimatu, lisa appsettings.json faili järgmine kood:
Muuda Startup.cs faili ja registreeri WCF teenus järgmise koodiga:
Kutsu WCF teenust HomeController kontrolleril, esimene konstruktori süstimine, kood on järgmine:
WCF teenusele helistamine:
Käivita asp.net Core veebileht, efekt on allpool näidatud:
Proovime muuta WCF teenust nii, et liides tagastab tulemuse 3 minuti pärast, ning seejärel taaskäivitame asp.net tuuma, et kutsuda WCF teenus, ja viga on järgmine:
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.) Praegu peame muutma vaikimisi ajapiirangut, kohandama BasicHttpBinding sidumist ja Startup.cs faili uuesti redigeerima järgmiselt:
Lähtekoodi allalaadimine:
Turistid, kui soovite näha selle postituse peidetud sisu, palun Vastuse
|