Ich habe eine Server/Client-Anwendung in Delphi 2006 entwickelt. Der Client ist Win32 und der Server ist ein. Net 1.1 Webservice.WCF-Dienst ausgesetzt als ASMX wird keine Parameter akzeptieren
Wir sind dabei, dieses Projekt zu aktualisieren, aber es muss in kleinen Schritten durchgeführt werden. Ich begann mit dem Server und erstellte ein WCF-Projekt in VS2010 (C# .net 4.0). Der erste Schritt besteht darin, den Server in WCF auszuführen, ohne den Client zu ändern. Also habe ich das Fassadenmuster verwendet, eine ähnliche Schnittstelle zum alten Delphi-Webservice erstellt, einen Verweis auf die alte .net 1.1-DLL hinzugefügt und in meiner Implementierung den alten .net 1.1-Code aufgerufen.
Nächster Schritt Aktualisieren der Proxy-Klasse auf dem Client. Dies ist fehlgeschlagen. Das WSDL-Importer hat die basicHttpBinding-Anweisung nicht richtig verstanden, sodass die generierte Proxyklasse den vorhandenen Proxy nicht ersetzen konnte.
Nach ein wenig Recherche fand ich diesen Blogpost.
http://kjellsj.blogspot.com/2006/12/how-to-expose-wcf-service-also-as-asmx.html
Das funktionierte, war die ASMX WSDL nicht anders als das alte .net alles 1.1 so appered ok.
Aber es war nicht. Beim Testen des neuen Dienstes habe ich festgestellt, dass alle meine Parameter auf dem Server leer waren. Ich habe mit Fiddler auf dem Client versucht und die Parameter sind in der XML vorhanden, die an den Server gesendet wird.
So bin ich fest. Irgendwelche Gedanken darüber, wie man das lösen könnte, würden sehr geschätzt werden. Gibt es einen Code, der interessant sein könnte, dann lass es mich wissen.
So ist die WSDL ist die gleiche, aber der Server ist jetzt 4.0 .Net statt 1.1? Wenn der Delphi-Client die gleiche WSDL wie zuvor verwendet, aber der Server die Parameter nicht mehr sieht, würde ich einen Client in .Net schreiben und sehen, ob das funktioniert. Wenn dies der Fall ist, vergleichen Sie die Soap-Anforderungen des Clients mit .Net und Delphi. – mjn
Vergleichen Sie das XML. "Null-Parameter" bedeutet normalerweise, dass es einen Namensraumunterschied zwischen dem, was gesendet wird und was erwartet wird. –