När man utvecklar ett nytt projekt, med asp.net kärnteknologi, kan det gamla projektet vara en WCF-tjänst utvecklad med .NET Framework 4, eftersom rekonstruktionskostnaden är för hög är det nödvändigt att använda asp.net kärna för att anropa WCF-tjänstegränssnittet.
Först, skapa två nya projekt:
ASP.NET Core 3.1-projekt: dotnet-core-call-wcf .NET Framework 4-projektet (WCF-tjänsteapplikation): schools-wcf-service
Visual Studio 2019 vill skapa en WCF-tjänst, kan inte hitta mallen, lösningen:
Välj Installera fler verktyg och funktioner för att öppna Visual Studio Installer. Välj fliken Individuella komponenter, scrolla ner till Utvecklingsaktiviteter, välj Windows Communication Foundation och klicka på Modifiera.
WCF skapar två gränssnitt enligt följande:
Gränssnittets implementeringskod är följande:
Ett servicekontrakt är en samling relaterade serviceoperationer, och när vi applicerar ett ServiceContractAttribute på ett gränssnitt ger vi det ett servicekontraktsattribut. För en sådan typ blir dock inte dess idiom automatiskt en kontraktsbaserad tjänsteoperation, och endast när funktionen OperationContractAttribute tillämpas kan motsvarande metodmedlem bli en tjänsteoperation som kan nås via tjänsteanrop.
När du startar wcf-projektet kommer det automatiskt att köra WcfTestClient och försöka anropa det som visas i figuren nedan:
Använd ASP.NET kärnprojekt för att kalla WCF-tjänster
Högerklicka på Connected Services, välj den tjänst du vill lägga till en anslutning till och välj WCF-tjänst, som visas i följande bild:
Tjänsteadress fylld: http://localhost:3705/Service1.svc
Möjliga fel:
Eftersom det är omöjligt att skriva WCF-tjänsteadressen till döds, lägg till följande kod i appsettings.json-filen:
Redigera Startup.cs-filen och registrera WCF-tjänsten med följande kod:
Anropa wcf-tjänsten på HomeController-kontrollern, första konstruktörinjektionen, koden är följande:
Anrop till WCF-tjänsten:
Kör asp.net Core-webbplatsen, effekten är som visas nedan:
Vi försöker modifiera WCF-tjänsten så att gränssnittet returnerar resultatet efter 3 minuter, och sedan starta om asp.net kärna för att anropa WCF-tjänsten, och felet är följande:
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.) Just nu behöver vi ändra standardtimeouten, anpassa BasicHttpBinding-bindningen och redigera om Startup.cs-filen, enligt följande:
Källkodsnedladdning:
Turister, om ni vill se det dolda innehållet i detta inlägg, snälla Svar
|