Quando si sviluppa un nuovo progetto, utilizzando asp.net tecnologia core, il vecchio progetto può essere un servizio WCF sviluppato usando .NET Framework 4, poiché il costo di ricostruzione è troppo alto, quindi è necessario utilizzare asp.net core per chiamare l'interfaccia di servizio WCF.
Per prima cosa, crea due nuovi progetti:
ASP.NET progetto Core 3.1: dotnet-core-call-wcf Progetto .NET Framework 4 (applicazione di servizio WCF): schools-wcf-service
Visual Studio 2019 vuole creare un servizio WCF, non riesco a trovare il template, soluzione:
Seleziona Installa altri strumenti e funzionalità per aprire Visual Studio Installer. Seleziona la scheda Componenti Individuali, scorri fino a Attività di Sviluppo, seleziona Windows Communication Foundation e clicca su Modifica.
WCF crea due interfacce come segue:
Il codice di implementazione dell'interfaccia è il seguente:
Un contratto di servizio è una raccolta di operazioni di servizio correlate e, quando applichiamo un ServiceContractAttribute su un'interfaccia, gli attribuiamo un attributo di contratto di servizio. Tuttavia, per tale tipo, il suo idioma non diventa automaticamente un'operazione di servizio contrattuale, e solo quando viene applicata la funzione OperationContractAttribute può il corrispondente membro del metodo diventare un'operazione di servizio accessibile tramite chiamata di servizio.
Quando avvii il progetto wcf, eseguirà automaticamente WcfTestClient e cercherà di chiamarlo come mostrato nella figura qui sotto:
Usa ASP.NET progetti Core per chiamare i servizi WCF
Clicca con il tasto destro su Servizi Connessi, seleziona il servizio a cui vuoi aggiungere una connessione e seleziona il servizio WCF, come mostrato nell'immagine seguente:
Indirizzo di servizio coperto: http://localhost:3705/Service1.svc
Possibili errori:
Poiché è impossibile scrivere l'indirizzo di servizio WCF fino alla morte, aggiungere il seguente codice al file appsettings.json:
Modifica il file Startup.cs e registra il servizio WCF con il seguente codice:
Chiama il servizio wcf sul controller HomeController, prima iniezione del costruttore, il codice è il seguente:
Chiamare il servizio WCF:
Gestisci il sito asp.net Core, l'effetto è il seguente:
Cerchiamo di modificare il servizio WCF in modo che l'interfaccia restituisca il risultato dopo 3 minuti, poi riavviiamo asp.net core per chiamare il servizio WCF, e l'errore è il seguente:
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.) Al momento, dobbiamo modificare il timeout predefinito, personalizzare il binding BasicHttpBinding e ri-modificare il file Startup.cs, come segue:
Scarica codice sorgente:
Turisti, se volete vedere il contenuto nascosto di questo post, vi prego Risposta
|