wake-up-neo.com

SOAP in .NET Core?

Wie machen Sie SOAP in .NET Core? Gibt es Äquivalente von Apache CXF in .Net Core (nicht nur ein einfacher SOAP - Client, sondern ein voll ausgestatteter Stack)?

Sorry, wenn dies eine sehr grundlegende Frage ist, liefert meine bisherige Suche keine klare Antwort. 

18
Yudhistira Arya

Microsoft plant derzeit nicht, ein SOAP serverseitiges Framework für .NET Core zu versenden. Weder der WCF ServiceHost noch ASMX sind verfügbar. Es ist zu früh, um zu sagen, welche der Nicht-Microsoft-Stacks die dominierende Rolle spielen werden.

Mit der Einführung der ASP.NET-Web-API und dem Aufstieg von REST -Endpunkten war WCF tot. Der WCF-Client ist eine Interop-Geschichte, keine fortlaufende Geschichte (vollständige Geschichte hier: http://blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6/ )

11
Thomas

Vor einigen Monaten haben WCF-Clients aufgrund einer Einschränkung (bei der Integration mit einem Java-Webdienst) eine Antwortklasse mit demselben Namen wie die Methode und im gleichen Namespace erstellt. Wenn der WCF-Client eine Anforderung sendete, konnte die Serialisierung nicht durchgeführt werden - Die zugehörige Frage kann nicht in SO gefunden werden. Ich musste einen SOAP HTTP-Client erstellen, der den HttpClient unterstreicht. Ich habe schließlich eine Open-Source-Version ( https://github.com/gravity00/SimpleSOAPClient ) veröffentlicht, die wir erfolgreich in der Produktion einsetzen und .NET Core- und Xamarin-Anwendungen unterstützen. Fühlen Sie sich frei, es zu versuchen. Ich empfehle Version 2.0.0-RC03 aufgrund einiger wichtiger Verbesserungen seit Version 1.x.

6
João Simões

In VS 2017 können Sie ab Dezember '17 (Version 15.5) jetzt einen generierten WCF-Client mithilfe von WSDL zu einem Dienst aus einem .NET-Standard-Projekt mit Connected Services hinzufügen. Im Projektmappen-Explorer können Sie dorthin gelangen, indem Sie mit der rechten Maustaste auf "Abhängigkeiten" klicken, oder mit der rechten Maustaste auf das Projekt unter "Hinzufügen ...".

3
Marc L.

Hier haben Sie einen kleinen Trick, den ich in einer ASP.Net 5.0-Web-App zum Targeting "framework 452" verwendet habe. 

Leider funktioniert das neue "Add connected Service" -> "WCF-Service" nur beim Targeting auf ".Net Core" . Daher habe ich eine grundlegende Konsolen-App mit demselben Namen wie meine Web-App erstellt. 

Konsolen-Apps ermöglichen das Hinzufügen von "Dienstreferenz" . Nach dem Hinzufügen von VS2015 werden alle Dienstverweise im Ordner "Dienstreferenzen" erstellt. 

Verschieben Sie einfach den Ordnerinhalt in eine Weblösung und verwenden Sie einen Client-Konstruktor, der HttpBindings und EndPoint-Parameter akzeptiert. 

In meinem Fall verbinde ich mich mit dem EchosignService-Initialisierungs-Client wie folgt:

using (EchoSignDocumentService16PortTypeClient service = new EchoSignDocumentService16PortTypeClient(new BasicHttpBinding(BasicHttpSecurityMode.Transport), new EndpointAddress(adddress)))
{
...
}
1
Gonzalo

Ich brauche SOAP für meine älteren Clients. Daher habe ich eine separate SOAP -Bibliothek erstellt, die mit meinen älteren Clients kompatibel ist. Dazu wird das .NET-Framework verwendet, das in einer separaten Umgebung gehostet wird. (SOAP.mywebsite.com). Dann auf www.mywebsite.com (erstellt mit asp.net Core, habe ich eine Restschnittstelle. Die SOAP - Schicht ruft die Restschnittstelle auf...). Die Bibliothek zum Aufrufen der Restschnittstelle wird mit Swashbuckle generiert.

1

Um dieses Problem zu umgehen, habe ich ein Nuget-Paket in .NET 4.5 erstellt, das eine Verbindung zu nativen SOAP - Clients herstellt, die in .NET Core nicht unterstützt werden. Als Nächstes habe ich eine .NET-Kernanwendung erstellt, die auf das .NET-Framework abzielt. Dadurch konnte ich das Nuget-Paket ohne Fehler verwenden.

0
Bilbo Baggins