WCF-REST サービスがあり、クライアントは Content Encoding = gzip でデータを送信し、データを gzip 形式で圧縮しています。ただし、WCF サービスで受信した要求からフォーム データを解凍することはできません。
質問する
920 次
1 に答える
1
最後に、私のコラージュの 1 つが答えを見つけました。 Sandesh とチームに感謝します!!!
すべての HTTP リクエストをインターセプトしてデータを解凍する IHttpModule を追加する必要があります。
/// <summary>
/// This class Handles various pre-conditions which has to performed before processing the HTTP request.
/// @author XXXXX
/// </summary>
public class PreRequestHandler : IHttpModule
{
public void Dispose()
{
throw new NotImplementedException();
}
public void Init(HttpApplication httpContext)
{
httpContext.BeginRequest += DecompressReceivedRequest;
}
/// <summary>
/// Decompresses the HTTP request before processing it.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void DecompressReceivedRequest(object sender, EventArgs e)
{
HttpApplication httpApp = (HttpApplication)sender;
if ("gzip" == httpApp.Request.Headers["Content-Encoding"])
{
httpApp.Request.Filter = new GZipStream(httpApp.Request.Filter, CompressionMode.Decompress);
}
}
}
また、web.config ファイルに次のエントリを追加する必要があります。
<!-- Configuration setting to add Custom Http Module to handle various pre-conditions which has to performed before processing the HTTP request.-->
<system.webServer>
<modules>
<add name="PreRequestHandler" type="Your service class.PreRequestHandler"/>
</modules>
</system.webServer>
于 2013-05-02T07:45:11.580 に答える