Unter Verwendung von Visual Studio 2008 richte ich einen Client ein, der Webdienste verwendet. Es hat nichts mit Puffergrößen zu tun (da dies eine typische Antwort ist, wurden alle geeigneten Größen erhöht).WebServices schlagen fehl, weil (400) ungültige Anforderung wegen Sonderzeichen
Ich habe eine Liste als Parameter der Methode verwendet. Nach vielen Experimenten habe ich den System.Net.WebClient verwendet, um manuell eine Soap 1.1 und eine Soap 1.2-Anfrage zu erstellen, um das Ergebnis zu testen.
Wo das Xml ist eine Zeichenfolge-Variable des Xml mit tatsächlichen Daten. Das Problem liegt vor, wenn eines der Felder ein Sonderzeichen hat. Hier ist das Beispiel des Nachrichtentextes von xml.
<PocoClass>
<UnicodeString>123</UnicodeString>
</PocoClass>
Wenn der Wert von Unicode wurde etwas einfach (das heißt 123), aber sobald das Sonderzeichen erschien, bekam ich 400 Bad Request.
Jetzt habe ich einen Microsoft Knowledge Base-Artikel gefunden, der den Fehler kb911276 beschreibt, der grundsätzlich besagt, dass ein Hotfix installiert wird. Das ist wirklich nicht etwas, das eine Lösung für das Problem sein könnte, also habe ich mich gefragt, ob es irgendwelche Ideen gibt, wie man dieses Problem lösen kann?
Sind die einzigen Lösungen, um eine Art benutzerdefinierte Codierung/Decodierung oder benutzerdefinierte Bindungen zu schreiben, die vom Server und Client implementiert werden? Gibt es leichtere Ideen?
Dank
Edited: Die Verwendung einer Liste ist kein Problem, da es von VS. behandelt wird Hier ist ein vollständiger (aber immer noch teilweise) Inhalt der Soap-Nachricht.
Liste versus T [] hat keinen Einfluss auf die Serialisierung in ASMX, die mir bekannt ist. –