Bij het ontwikkelen van een nieuw project met asp.net kerntechnologie kan het oude project een WCF-dienst zijn die is ontwikkeld met het .NET Framework 4; omdat de reconstructiekosten te hoog zijn, is het noodzakelijk om asp.net kern te gebruiken om de WCF-serviceinterface aan te roepen.
Maak eerst twee nieuwe projecten aan:
ASP.NET Core 3.1 project: dotnet-core-call-wcf .NET Framework 4 project (WCF serviceapplicatie): schools-wcf-service
Visual Studio 2019 wil een WCF-service maken, kan de sjabloonoplossing niet vinden, oplossing:
Selecteer Meer tools en functies installeren om Visual Studio Installer te openen. Selecteer het tabblad Individuele Componenten, scroll naar beneden naar Ontwikkelingsactiviteiten, selecteer Windows Communication Foundation en klik op Wijzigen.
WCF creëert twee interfaces als volgt:
De implementatiecode van de interface is als volgt:
Een servicecontract is een verzameling van gerelateerde serviceoperaties, en wanneer we een ServiceContractAttribuut op een interface toepassen, geven we het een servicecontractattribuut. Voor zo'n type wordt het idioom echter niet automatisch een contractuele service-operatie, en pas wanneer de OperationContractAttribut-functie wordt toegepast, kan het betreffende methodlid een service-operatie worden die via serviceoproep toegankelijk is.
Wanneer je het wcf-project start, draait het automatisch WcfTestClient en probeert het aan te roepen zoals weergegeven in de onderstaande figuur:
Gebruik ASP.NET kernprojecten om WCF-diensten te bellen
Klik met de rechtermuisknop op Connected Services, selecteer de service waaraan je een verbinding wilt toevoegen, en selecteer WCF-service, zoals weergegeven in de volgende afbeelding:
Dienstadres ingevuld: http://localhost:3705/Service1.svc
Mogelijke fouten:
Aangezien het onmogelijk is om het WCF-serviceadres dood te schrijven, voeg de volgende code toe aan het appsettings.json bestand:
Bewerk het Startup.cs-bestand en registreer de WCF-dienst met de volgende code:
Roep de wcf-service op de HomeController-controller, eerste constructor-injectie, de code is als volgt:
Oproepen van de WCF-dienst:
Beheer de asp.net Core-website, het effect is als volgt weergegeven:
We proberen de WCF-service aan te passen zodat de interface na 3 minuten het resultaat teruggeeft, en vervolgens asp.net kern opnieuw starten om de WCF-dienst aan te roepen, en de foutmelding is als volgt:
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.) Op dit moment moeten we de standaard timeout aanpassen, de BasicHttpBinding-binding aanpassen en het Startup.cs-bestand opnieuw bewerken, als volgt:
Broncode downloaden:
Toeristen, als jullie de verborgen inhoud van dit bericht willen zien, alsjeblieft Antwoord
|