Când se dezvoltă un proiect nou, folosind tehnologia asp.net de bază, vechiul proiect poate fi un serviciu WCF dezvoltat folosind .NET Framework 4, deoarece costul de reconstrucție este prea mare, fiind necesar să se folosească asp.net nucleu pentru a apela interfața serviciului WCF.
În primul rând, creează două proiecte noi:
ASP.NET Proiectul Core 3.1: dotnet-core-call-wcf Proiectul .NET Framework 4 (aplicație de serviciu WCF): schools-wcf-service
Visual Studio 2019 vrea să creeze un serviciu WCF, nu găsesc șablonul, soluție:
Selectează Instalează mai multe unelte și funcții pentru a deschide Visual Studio Installer. Selectează fila Componente Individuale, derulează în jos până la Activități de Dezvoltare, selectează Fundația de Comunicare Windows și apasă pe Modificare.
WCF creează două interfețe după cum urmează:
Codul de implementare al interfeței este următorul:
Un contract de serviciu este o colecție de operațiuni de servicii conexe, iar când aplicăm un ServiceContractAttribute pe o interfață, îi atribuim un atribut de contract de servicii. Totuși, pentru un astfel de tip, idiomul său nu devine automat o operație contractuală de serviciu, iar doar atunci când funcția OperationContractAttribute este aplicată poate fi membrul corespunzător al metodei să devină o operațiune de serviciu accesibilă prin apel de serviciu.
Când începi proiectul wcf, acesta va rula automat WcfTestClient și va încerca să-l cheme, așa cum se arată în figura de mai jos:
Folosiți proiectele ASP.NET Core pentru a chema servicii WCF
Faceți clic dreapta pe Servicii conectate, selectați serviciul la care doriți să adăugați o conexiune și selectați serviciul WCF, așa cum se arată în imaginea următoare:
Adresa serviciului ocupată: http://localhost:3705/Service1.svc
Posibile erori:
Deoarece este imposibil să scrii adresa serviciului WCF până la moarte, adaugă următorul cod în fișierul appsettings.json:
Editați fișierul Startup.cs și înregistrați serviciul WCF cu următorul cod:
Sună serviciul wcf pe controlerul HomeController, prima injecție a constructorului, codul este următorul:
Apelarea serviciului WCF:
Rulează site-ul asp.net Core, efectul este prezentat mai jos:
Încercăm să modificăm serviciul WCF astfel încât interfața să returneze rezultatul după 3 minute, apoi repornim nucleul asp.net pentru a chema serviciul WCF, iar eroarea este următoarea:
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.) În acest moment, trebuie să modificăm timeout-ul implicit, să personalizăm legarea BasicHttpBinding și să reedităm fișierul Startup.cs, după cum urmează:
Descărcare cod sursă:
Turiști, dacă vreți să vedeți conținutul ascuns al acestei postări, vă rog Răspunde
|