Ich habe eine asp.net .asmx Webservice geschrieben, um Anfragen von einem Drittanbieter-Tool zu behandeln. Das Third-Party-Tool stellt eine HTTP-POST-Anfrage an den Webservice, um Benutzerinformationen zu erhalten. Ich benutze IIS7asp.net webservice handling gzip komprimierte Anfrage
Running Fiddler mit "Remove All Encodings" aktiviert, kann ich den Webservice-Aufruf sehen und alles funktioniert ordnungsgemäß. Wenn ich "Remove All Encodings" deaktivieren, schlägt der Webservice-Aufruf mit einer 400 Bad Request fehl. Der Unterschied, den ich sehe, ist, dass der Header "Content-Encoding: gzip" von Fiddler entfernt wird und der Inhalt dekomprimiert wird.
Wenn also der Content-Encoding-Header entfernt und der Inhalt dekomprimiert wird, funktioniert mein Webservice einwandfrei. Wenn der Header vorhanden ist und der Inhalt komprimiert ist, schlägt der Webservice fehl.
Wie kann ich entweder:
- mein Webservice Konfigurieren Sie den Client zu sagen, dass es keine Druck Anforderungen annimmt (und hoffen, dass die Drittanbieter-Tool respektiert, dass)
- Dekomprimieren der Inhalt in den frühen asp.net Handhabung
- meine Webservice ändern mit komprimierten Daten
-Update zu arbeiten: um es klar, ich brauche nicht Um die Gzip-Kodierung in der Response zu konfigurieren, muss ich mich mit einer Anfrage an meinen Webservice beschäftigen, der Gzip-kodiert ist.
Update 2: Das Tool von Drittanbietern ist das Salesforce.com Outlook-Plug-in. Also, ich habe keinen Zugriff darauf, es zu ändern und es wird von vielen anderen Firmen ohne Probleme verwendet. Es muss etwas sein, ich tue (oder nicht zu tun)
Update 3: ich einen Beitrag here gefunden, die besagen, dass IIS keine eingehenden POST-Anfragen mit komprimierten Daten nicht unterstützt, es unterstützt nur komprimierte Antworten. Kann das immer noch wahr sein?
Ich habe schon seit einigen Jahren nicht mehr mit ASP-Webdiensten (.asmx) gearbeitet, konnte aber nicht auf die Antwortheader mit HttpContext.Current.Response.Headers zugreifen? –
@Florin, Sie haben Recht. Ich konnte den störenden Header in der PostRequestHandlerExecute-Funktion entfernen UND den Accelpt-Encoding-Header aus der eingehenden Anfrage in der BeginRequest-Funktion entfernen. Musste beides tun, damit es funktioniert. – Geoff