Pri razvoju novega projekta, ki uporablja asp.net osnovno tehnologijo, je lahko stari projekt WCF storitev, razvita z uporabo .NET Framework 4, ker so stroški rekonstrukcije previsoki, je treba uporabiti asp.net jedro za klic WCF storitvenega vmesnika.
Najprej ustvarite nova dva projekta:
ASP.NET Projekt Core 3.1: dotnet-core-call-wcf .NET Framework 4 projekt (WCF servisna aplikacija): schools-wcf-service
Visual Studio 2019 želi ustvariti WCF storitev, ne najdem predloge, rešitev:
Izberite Namesti več orodij in funkcij za odpiranje namestitvenega programa Visual Studio. Izberite zavihek Posamezne komponente, se pomaknite navzdol do Razvojne aktivnosti, izberite Windows Communication Foundation in kliknite Spremeni.
WCF ustvari dva vmesnika na naslednji način:
Implementacijska koda vmesnika je naslednja:
Pogodba o storitvah je zbirka povezanih storitvenih operacij, in ko na vmesnik uporabimo atribut ServiceContractAtribut, mu dodelimo atribut storitvene pogodbe. Vendar pa za tak tip idiom ne postane samodejno pogodbena storitvena operacija, in šele ko se uporabi funkcija OperationContractAttribute lahko ustrezni član metode postane storitvena operacija, do katere je mogoče dostopati s servisnim klicem.
Ko začnete projekt WCF, bo samodejno zagnal WcfTestClient in ga poskušal poklicati, kot je prikazano na spodnji sliki:
Uporabite ASP.NET Core projekte za klic storitev WCF
Desni klik na Connected Services, izberite storitev, na katero želite dodati povezavo, in izberite storitev WCF, kot je prikazano na naslednji sliki:
Naslov storitve izpolnjen: http://localhost:3705/Service1.svc
Možne napake:
Ker je nemogoče zapisati naslov WCF storitve do smrti, dodajte naslednjo kodo v appsettings.json datoteko:
Uredite datoteko Startup.cs in registrirajte storitev WCF z naslednjo kodo:
Pokliči storitev wcf na krmilniku HomeController, prvi vbrizg konstruktorja, koda je naslednja:
Klicanje storitve WCF:
Poglejte spletno stran asp.net Core, učinek je prikazan spodaj:
Poskušamo spremeniti storitev WCF tako, da vmesnik po 3 minutah vrne rezultat, na asp.net to pa ponovno zaženemo jedro, da pokličemo storitev WCF, in napaka je naslednja:
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.) Trenutno moramo spremeniti privzeto časovno omejitev, prilagoditi vezavo BasicHttpBinding in ponovno urediti Startup.cs datoteko, kot sledi:
Prenos izvorne kode:
Turisti, če želite videti skrito vsebino te objave, prosim Odgovoriti
|