Bei der Entwicklung eines neuen Projekts mit asp.net Kerntechnologie kann das alte Projekt ein WCF-Dienst sein, der mit dem .NET Framework 4 entwickelt wurde; da die Rekonstruktionskosten zu hoch sind, ist es notwendig, asp.net Kern zu verwenden, um die WCF-Service-Schnittstelle aufzurufen.
Zuerst erstelle zwei neue Projekte:
ASP.NET Core 3.1 Projekt: dotnet-core-call-wcf .NET Framework 4 Projekt (WCF-Service-Anwendung): schools-wcf-service
Visual Studio 2019 möchte einen WCF-Dienst erstellen, findet aber keine Vorlage, Lösung:
Wählen Sie "Installieren von weiteren Werkzeugen und Funktionen", um den Visual Studio Installer zu öffnen. Wählen Sie den Reiter Einzelne Komponenten aus, scrollen Sie nach unten zu Entwicklungsaktivitäten, wählen Sie Windows Communication Foundation und klicken Sie auf Anpassen.
WCF erstellt zwei Schnittstellen wie folgt:
Der Implementierungscode der Schnittstelle ist wie folgt:
Ein Servicevertrag ist eine Sammlung verwandter Serviceoperationen, und wenn wir ein ServiceContractAttribute auf eine Schnittstelle anwenden, geben wir ihr ein Servicevertragsattribut. Für einen solchen Typ wird sein Idiom jedoch nicht automatisch zu einer vertraglichen Serviceoperation, und erst wenn die Feature-OperationContractAttribute angewendet wird, kann das entsprechende Methodenmitglied zu einer Serviceoperation werden, die per Serviceaufruf zugänglich ist.
Wenn du das wcf-Projekt startest, wird WcfTestClient automatisch ausgeführt und versucht, es wie in der untenstehenden Abbildung gezeigt aufzurufen:
Nutzen Sie ASP.NET Kernprojekte, um WCF-Dienste anzurufen
Rechtsklick auf Connected Services, wähle den Dienst aus, zu dem du eine Verbindung hinzufügen möchtest, und wähle WCF-Service, wie im folgenden Bild gezeigt:
Ausgefüllte Serviceadresse: http://localhost:3705/Service1.svc
Mögliche Fehler:
Da es unmöglich ist, die WCF-Serviceadresse zu Tode zu schreiben, fügen Sie folgenden Code zur appsettings.json-Datei hinzu:
Bearbeiten Sie die Startup.cs-Datei und registrieren Sie den WCF-Dienst mit folgendem Code:
Rufen Sie den WCF-Dienst auf dem HomeController-Controller auf, erste Konstruktor-Injektion, der Code lautet wie folgt:
Anruf des WCF-Dienstes:
Betreibt die asp.net Core-Website, der Effekt ist wie folgt dargestellt:
Wir versuchen, den WCF-Dienst so zu modifizieren, dass die Schnittstelle nach 3 Minuten das Ergebnis zurückgibt, und starten dann asp.net Core neu, um den WCF-Dienst aufzurufen, und der Fehler lautet wie folgt:
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.) Zu diesem Zeitpunkt müssen wir die Standard-Timeout ändern, die BasicHttpBinding-Bindung anpassen und die Startup.cs-Datei wie folgt neu bearbeiten:
Quellcode-Download:
Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitte Antwort
|