Ich habe ein Problem bei der Verwendung eines WCF-Aufrufs von einem Windows-Dienst an meinen WCF-Dienst, der auf meinem Webserver ausgeführt wird. Dieser Anruf funktioniert seit einigen Wochen, funktioniert dann aber plötzlich nicht mehr und hat seitdem nicht mehr funktioniert.
Die Ausnahme, die ich bekomme, ist:
Allgemeiner Fehler aufgetreten System.ServiceModel.CommunicationException: Beim Ausführen der HTTP-Anforderung ist ein Fehler aufgetreten
und dann heißt es
Dies kann daran liegen, dass das Serverzertifikat im HTTPS-Fall nicht ordnungsgemäß mit HTTP.SYS konfiguriert ist. Dies kann auch durch eine Nichtübereinstimmung der Sicherheitsbindung zwischen Client und Server verursacht werden.
Die Sicherheit, die ich an beiden Enden verwende, ist wsHttpBinding ohne jegliche Verschlüsselung. Es wird auch nur HTTP verwendet - nicht HTTPS, daher bin ich mir nicht sicher, warum es sich über HTTPS beschwert.
Der Rest des inneren Ausnahmestapels ist:
SystemNet.WebException: Die zugrunde liegende Verbindung wurde geschlossen: Beim Senden ist ein unerwarteter Fehler aufgetreten. ---> System.IO.IOException: Daten können nicht in die Transportverbindung geschrieben werden: Es wurde ein ungültiges Argument angegeben. ---> System.Net.Sockets.SocketException: Bei System.Net.Sockets.Socket.MultipleSend (BufferOffsetSize [] -Puffer, SocketFlags-SocketFlags) bei System.Net.Sockets.NetworkStream.MultipleWrite (BufferOffsetSize] wurde ein ungültiges Argument angegeben Puffer)
Ich sollte auch beachten, dass der Punkt in meinem Programm, an dem dies auftritt, in der Zeile "Ausführen" des Aufrufs des Webdienstes liegt - das heißt, sobald ich den Webdienst aufrufe und ihm das verpackte DataContract-Objekt übergebe in die Luft sprengen.
Alles, was dieser Dienst tut, ist die Übergabe einer großen Menge an XML (als .NET-Objekt an den Aufruf auf der Clientseite übergeben), mit der er dann einige Arbeiten ausführt. Wahrscheinlich werden ungefähr 100-200k XML übertragen. Ich habe die Grenzwerte für die Datengrößen an beiden Enden auf über 6 Megabyte erhöht, aber das schien nicht zu helfen.
Irgendwelche Ideen?
Weitere Informationen zu diesem Thema:
Wenn wir die Client-Umgebung lokal duplizieren, stellen wir fest, dass wir keine großen Mengen an XML hochladen können, wenn wir nicht die folgenden Änderungen vornehmen: 1. Setzen Sie auf dem Server die "maxRequestLength" auf 100 MB (viel höher als beim Senden). 2. Ein Im Client setzen wir den Wert von maxItemsInObjectGraph unter dem Tag dataContractSerializer auf "2147483646".
Mit diesen Änderungen wird unsere lokale Installation erfolgreich hochgeladen. Die Installation des Clients auf seinem Server schlägt jedoch weiterhin fehl. Interessant ist, dass unsere Testinstallation nach der Änderung des Werts für maxRequestLength auf dem Server einen Fehler auslöste, der sich speziell auf die Einstellung maxItemsInObjectGraph bezog. Während auf dem Server unseres Clients immer noch der ursprüngliche Fehler "HTTP.sys" auftritt.
Wie bereits erwähnt, verwenden wir überhaupt kein SSL, und es gibt zwei weitere Webdienstaufrufe, die XML auf dieselbe Weise ausführen und hochladen. Da der nicht funktionierende Serviceabruf jedoch mehr Daten überträgt, scheint dies ein Größenproblem zu sein.
Wenn jedoch das Problem, das der Client hat, das gleiche war, das unsere Testinstallation hatte, verstehe ich nicht, warum die Client-Fehlermeldung nicht mit dem ObjectGraph-Fehler zusammenhängt.
Ist es möglich, dass wir nur den generischen Fehler "Ungültiger Parameter" "HTTP.sys" für jeden möglichen Fehler auf dem Client erhalten (dh es wird wirklich auch der Fehler objectGraph angezeigt, aber nur nicht angezeigt?)