2

非常に大きな文字列を XML ファイルに格納する必要がありました。GZipStreamここで、aを使用して文字列を圧縮し、後でクライアント側で解凍し たいと考えました。WCF サービス メソッドは、戻り値の型として zip ストリームを返すことができますか?

私のサービス方法があります:

public Stream ZipResponse()
{
    byte[] byteArray = null;
    GZipStream compressionStream = null;
    try
    {
        var var_details = "XML String Here";
        byteArray = Encoding.UTF8.GetBytes(var_details);
        MemoryStream stream = new MemoryStream(byteArray);
        compressionStream = new GZipStream(stream, CompressionMode.Compress, true);
    }
    catch (Exception e)
    { }
    return compressionStream;
}

ZipResponse()クライアント側からメソッドを呼び出すと
、「System.ServiceModel.CommunicationException」型の未処理の例外が mscorlib.dll で発生しました追加情報: XXX.XXX.XXX.XXX への HTTP 応答の受信中にエラーが発生しました。これは、サービス エンドポイント バインディングが HTTP プロトコルを使用していないことが原因である可能性があります。これは、HTTP 要求コンテキストがサーバーによって中止されたことが原因である可能性もあります (サービスのシャットダウンが原因である可能性があります)。詳細については、サーバー ログを参照してください。

4

2 に答える 2

2

はい、WCF サービス メソッドは Stream をクライアントに返すことができます。転送モードが「ストリーミング」に設定されていることを確認する必要があります。それとは別に、それは簡単でなければなりません。

ここで詳細情報を取得できます: WCF ストリーミング チュートリアル

于 2013-01-17T11:01:04.943 に答える
1

はい、7Zip(LZMA)WCFメッセージ圧縮に関するこの記事をご覧くださいhttp://geekswithblogs.net/argot/archive/2009/10/27/wcf-message-compression---gzip-7zip.aspx

于 2013-01-17T11:05:47.200 に答える