Når man utvikler et nytt prosjekt, med asp.net kjerneteknologi, kan det gamle prosjektet være en WCF-tjeneste utviklet med .NET Framework 4, og fordi rekonstruksjonskostnaden er for høy, er det nødvendig å bruke kjernen asp.net for å kalle WCF-tjenestegrensesnittet.
Først, lag to nye prosjekter:
ASP.NET Core 3.1-prosjekt: dotnet-core-call-wcf .NET Framework 4-prosjektet (WCF tjenesteapplikasjon): schools-wcf-service
Visual Studio 2019 ønsker å lage en WCF-tjeneste, finner ikke malen, løsningen:
Velg Installer flere verktøy og funksjoner for å åpne Visual Studio Installer. Velg fanen Individuelle komponenter, bla ned til Utviklingsaktiviteter, velg Windows Communication Foundation, og klikk Endre.
WCF lager to grensesnitt som følger:
Grensesnittimplementeringskoden er som følger:
En tjenestekontrakt er en samling av relaterte tjenesteoperasjoner, og når vi anvender et ServiceContractAttribut på et grensesnitt, gir vi det et servicekontraktattributt. For en slik type blir imidlertid ikke idiomet automatisk en kontraktsmessig tjenesteoperasjon, og først når OperationContractAttributt-funksjonen benyttes kan det tilsvarende metodemedlemmet bli en tjenesteoperasjon som kan nås via tjenestekall.
Når du starter wcf-prosjektet, vil det automatisk kjøre WcfTestClient og prøve å kalle det som vist i figuren under:
Bruk ASP.NET kjerneprosjekter for å kalle WCF-tjenester
Høyreklikk på Connected Services, velg tjenesten du vil legge til en tilkobling til, og velg WCF service, som vist i følgende bilde:
Utfylt tjenesteadresse: http://localhost:3705/Service1.svc
Mulige feil:
Siden det er umulig å skrive WCF-tjenesteadressen til døde, legg til følgende kode i appsettings.json-filen:
Rediger Startup.cs-filen og registrer WCF-tjenesten med følgende kode:
Kall wcf-tjenesten på HomeController-kontrolleren, første konstruktørinjeksjon, koden er som følger:
Å ringe WCF-tjenesten:
Kjør asp.net Core-nettsiden, effekten er som vist nedenfor:
Vi prøver å modifisere WCF-tjenesten slik at grensesnittet returnerer resultatet etter 3 minutter, og deretter starter asp.net kjerne på nytt for å kalle WCF-tjenesten, og feilen 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å dette tidspunktet må vi endre standard timeout, tilpasse BasicHttpBinding-bindingen og redigere Startup.cs-filen på nytt, som følger:
Nedlasting av kildekode:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare
|