サードパーティのツールからのリクエストを処理するasp.net .asmx webserviceがあります。サードパーティのツールは、Webサービスにhttp POST要求を出してユーザー情報を取得します。私はIIS7を使用していますasp.net webservice handling gzip圧縮要求
"すべてのエンコーディングを削除"でFiddlerを実行すると、webserviceの呼び出しとすべての機能が正しく表示されます。 "Remove All Encodings"のチェックを外すと、Webサービス呼び出しは400 Bad Requestで失敗します。私が見る違いは、ヘッダー "Content-Encoding:gzip"がFiddlerによって削除され、コンテンツが解凍されていることです。
したがって、Content-Encodingヘッダーが削除され、コンテンツが解凍されると、私のWebサービスは完全に機能します。ヘッダーが存在し、コンテンツが圧縮されると、Webサービスは失敗します。
どのようにいずれかのことができます。
- は、それが圧縮された要求を受け入れ(およびサードパーティのツールがあることを尊重することを願っています)ではないだろうことをクライアントに伝えるために、私のWebサービスを設定し
- は、早期のコンテンツを解凍します
- を扱うasp.netは更新圧縮データ
で動作するように私のWebサービスを変更します。明確にするために、私は必要はありませんレスポンスでgzipエンコーディングを設定するには、gzipエンコードされたリクエストに私のwebサービスに対処する必要があります。
更新2:サードパーティツールは、Salesforce.com Outlookプラグインです。だから私はそれを変更するアクセス権がなく、他の多くの企業でも問題なく使用されています。それは、私が3
アップデートやって(またはやっていない)よ何かをする持っている:私はIISが圧縮されたデータの着信POSTリクエストをサポートしていないと言うつのポストhereを見つけ、それだけで圧縮された応答をサポートしています。これはまだ真実であることができますか?
私は、ASP Webサービス(.asmx)Webサービスで長年働いていませんでしたが、HttpContext.Current.Response.Headersで応答ヘッダーにアクセスできませんでしたか? –
@Florin、あなたは正しいです。 PostRequestHandlerExecute関数で問題のヘッダーを削除し、BeginRequest関数で着信要求からAccelpt-Encodingヘッダーを削除できました。それを動作させるためには両方を行う必要がありました。 – Geoff