Kun kehitetään uutta projektia, jossa käytetään asp.net ydinteknologiaa, vanha projekti voi olla WCF-palvelu, joka on kehitetty .NET Framework 4:llä, koska uudelleenrakennuskustannukset ovat liian korkeat, asp.net on käytettävä WCF-palvelurajapinnan kutsumiseen.
Luo ensin kaksi uutta projektia:
ASP.NET Core 3.1 -projekti: dotnet-core-call-wcf .NET Framework 4 -projekti (WCF-palvelusovellus): koulut-wcf-palvelu
Visual Studio 2019 haluaa luoda WCF-palvelun, mutta ei löydä mallipohjaa, ratkaisua:
Valitse Asenna lisää työkaluja ja ominaisuuksia avataksesi Visual Studio -asennusohjelman. Valitse Yksittäiset komponentit -välilehti, selaa alas Kehitystoiminnot, valitse Windows Communication Foundation ja klikkaa Muokkaa.
WCF luo kaksi rajapintaa seuraavasti:
Rajapinnan toteutuskoodi on seuraava:
Palvelusopimus on kokoelma toisiinsa liittyviä palveluoperaatioita, ja kun sovellamme ServiceContractAttributen rajapinnalle, annamme sille palvelusopimuksen attribuutin. Tällaisessa tyypissä sen idiomi ei kuitenkaan automaattisesti muutu sopimuspalveluoperaatioksi, ja vasta kun OperationContractAttribute-ominaisuutta käytetään, vastaava metodijäsen voi muuttua palveluoperaatioksi, johon pääsee käsiksi palvelukutsulla.
Kun aloitat wcf-projektin, se suorittaa automaattisesti WcfTestClientin ja yrittää kutsua sitä alla olevassa kuvassa esitettyjen mukaisesti:
Käytä ASP.NET Core -projekteja soittaaksesi WCF-palveluille
Napsauta hiiren oikealla Connected Services, valitse haluamasi palvelu ja valitse WCF-palvelu, kuten seuraavassa kuvassa näkyy:
Palveluosoite täytetty: http://localhost:3705/Service1.svc
Mahdolliset virheet:
Koska WCF-palveluosoitteen kirjoittaminen kuoliaaksi, lisää seuraava koodi appsettings.json-tiedostoon:
Muokkaa Startup.cs-tiedostoa ja rekisteröi WCF-palvelu seuraavalla koodilla:
Kutsu WCF-palvelu HomeController-ohjaimella, ensimmäinen konstruktorien injektio, koodi on seuraava:
Soitan WCF-palveluun:
Käytä asp.net Core -sivustoa, vaikutus on alla esitetty:
Yritämme muokata WCF-palvelua niin, että liitäntä palauttaa tuloksen 3 minuutin kuluttua, ja käynnistämme sitten asp.net ytimen uudelleen kutsuaksemme WCF-palvelun, ja virhe on seuraava:
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.) Tällä hetkellä meidän täytyy muokata oletusaikakatkaisua, räätälöidä BasicHttpBinding-sidonta ja muokata Startup.cs-tiedostoa uudelleen seuraavasti:
Lähdekoodin lataus:
Turistit, jos haluatte nähdä tämän postauksen piilotetun sisällön, olkaa hyvä Vastaus
|