2011-12-14 13 views

答えて

4

Content-Lengthヘッダーはバイト数ではなく文字数です。 String.Lengthは文字数をカウントします。あなたはおそらく線に沿って何かをしたいです

Response.AddHeader("Content-Length", 
        Response.ContentEncoding.GetByteCount(output).ToString()); 
+0

ありがとうございます!魅力的な作品:) – Johan

2

あなたはおそらくHTTPリクエストでXMLを渡していますか?このような場合、データはバイトとして渡されます。長さを文字数ではなくバイト数で指定します。したがって、文字列の長さではなく、それらのバイトの長さを取得します。

この場合、UTF16と思われるエンコードが使用されますが、C#ではユニコードと呼ばれます。

あなたは役立つかもしれないメソッドのカップルを持っている:

Encoding.Unicode.GetBytes(someString); 
Encoding.Unicode.GetByteCount(someString); 
2

XMLが大きすぎるではない場合、あなたはMemoryStreamに書き込み、その後、MemoryStreamのコンテンツを送信することができます。

using (var ms = new MemoryStream()) 
{ 
    using (var writer = XmlWriter.Create(ms)) 
    { 
     // write your XML here... 
    } 
    Response.ContentLength = ms.Length; 
    Response.OutputStream.Write(ms.ToArray(), 0, ms.Length); 
} 
関連する問題