WCF-Dienst, der als ASMX verfügbar ist, akzeptiert keine Parameter

9

Ich habe eine Server / Client-Anwendung, die in Delphi 2006 entwickelt wurde. Der Client ist Win32 und der Server ist ein .net 1.1-Webservice.

Wir aktualisieren gerade dieses Projekt, aber es muss in kleinen Schritten gemacht 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 habe ich diesen Blogeintrag gefunden.

Ссылка

Das hat funktioniert, die ASMX WSDL war nicht anders als die alte .net 1.1, also war alles in Ordnung.

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.

Ich bin also festgefahren. 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.

    
olve 01.07.2010, 07:53
quelle

3 Antworten

1

Ich stieß auf ein ähnliches Problem mit einem Webservice asmx ... bestimmte Daten verloren ihre Werte. Wenn Sie hierarchische Daten verwenden, müssen Sie möglicherweise die internen oder vererbten Objekte mithilfe eines XmlInclude-Attributs deklarieren. Wenn Sie beispielsweise über eine Benutzerklasse verfügen, die in Ihrem Service verwendet wird, und eine Kundenunterklasse, müssen Sie möglicherweise die Customer-Klasse für den Service deklarieren, wenn sie nicht direkt in einer Webmethode verwendet wird. Sie würden dies wie folgt tun.

%Vor%

Natürlich kann es damit nichts zu tun haben, also viel Glück, wenn das der Fall ist. :)

    
Sheridan 07.07.2010 18:41
quelle
0

Bestätigen Sie, dass die Parameternamen im neuen Service mit den Namen im alten Service übereinstimmen. Wenn Sie die Parameternamen geändert haben, werden sie nicht aus dem XML-Code zugeordnet, sodass sie im ausführenden Code null sind.

    
Greg Sansom 30.11.2010 22:24
quelle
0

Hinzufügen des KnownType-Attributs zu den Unterklassen

    
InfoLearner 03.12.2010 21:53
quelle