ここで受け入れられた回答を使用しています。Transmit generated XML file without saving to diskXMLを生成します。間違ったコンテンツの長さ
コンテンツの長さはどのように知っていますか?イムはdoc.OuterXml.Length.ToString()
を使用していますが、最後に20〜30文字のように見付かりません。
ここで受け入れられた回答を使用しています。Transmit generated XML file without saving to diskXMLを生成します。間違ったコンテンツの長さ
コンテンツの長さはどのように知っていますか?イムはdoc.OuterXml.Length.ToString()
を使用していますが、最後に20〜30文字のように見付かりません。
Content-Length
ヘッダーはバイト数ではなく文字数です。 String.Length
は文字数をカウントします。あなたはおそらく線に沿って何かをしたいです
Response.AddHeader("Content-Length",
Response.ContentEncoding.GetByteCount(output).ToString());
あなたはおそらくHTTPリクエストでXMLを渡していますか?このような場合、データはバイトとして渡されます。長さを文字数ではなくバイト数で指定します。したがって、文字列の長さではなく、それらのバイトの長さを取得します。
この場合、UTF16と思われるエンコードが使用されますが、C#ではユニコードと呼ばれます。
あなたは役立つかもしれないメソッドのカップルを持っている:
Encoding.Unicode.GetBytes(someString);
Encoding.Unicode.GetByteCount(someString);
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);
}
ありがとうございます!魅力的な作品:) – Johan