Når man udvikler et nyt projekt med asp.net kerneteknologi, kan det gamle projekt være en WCF-tjeneste udviklet med .NET Framework 4, fordi genopbygningsomkostningerne er for høje, og det er nødvendigt at bruge asp.net kerne til at kalde WCF-servicegrænsefladen.
Først skal du oprette to nye projekter:
ASP.NET Core 3.1-projekt: dotnet-core-call-wcf .NET Framework 4-projektet (WCF serviceapplikation): schools-wcf-service
Visual Studio 2019 vil gerne oprette en WCF-tjeneste, kan ikke finde skabelonen, løsningen:
Vælg Installer flere værktøjer og funktioner for at åbne Visual Studio Installer. Vælg fanen Individuelle komponenter, rul ned til Udviklingsaktiviteter, vælg Windows Communication Foundation, og klik på Tilsnyd.
WCF opretter to grænseflader som følger:
Interface-implementeringskoden er som følger:
En servicekontrakt er en samling af relaterede serviceoperationer, og når vi anvender en ServiceContractAttribute på en grænseflade, giver vi den en servicekontraktattribut. For en sådan type bliver dens idiom dog ikke automatisk en kontraktmæssig serviceoperation, og kun når OperationContractAttribut-funktionen anvendes, kan det tilsvarende metodemedlem blive en serviceoperation, der kan tilgås via servicekald.
Når du starter wcf-projektet, vil det automatisk køre WcfTestClient og forsøge at kalde det som vist i figuren nedenfor:
Brug ASP.NET kerneprojekter til at kalde WCF-tjenester
Højreklik på Connected Services, vælg den tjeneste, du vil tilføje forbindelse til, og vælg WCF-service, som vist på følgende billede:
Serviceadresse udfyldt: http://localhost:3705/Service1.svc
Mulige fejl:
Da det er umuligt at skrive WCF-serviceadressen til døde, skal følgende kode tilføjes til appsettings.json-filen:
Rediger Startup.cs-filen og registrer WCF-tjenesten med følgende kode:
Kald wcf-tjenesten på HomeController-controlleren, første konstruktør-injektion, koden er som følger:
Opkald til WCF-tjenesten:
Kør asp.net Core-hjemmesiden, effekten er som vist nedenfor:
Vi forsøger at ændre WCF-tjenesten, så interfacet returnerer resultatet efter 3 minutter, og genstarter derefter kernen asp.net for at kalde WCF-tjenesten, og fejlen er som følger:
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.) På nuværende tidspunkt skal vi ændre standardtimeouten, tilpasse BasicHttpBinding-bindingen og redigere Startup.cs-filen igen som følger:
Kildekode-download:
Turister, hvis I vil se det skjulte indhold i dette indlæg, så vær venlig Svar
|