我在这里使用接受的答案:Transmit generated XML file without saving to disk
我如何知道内容长度?我正在使用doc.OuterXml.Length.ToString()
,但最后我失踪了20-30个字符。
答案 0 :(得分:4)
Content-Length
标头计算字节数,而不是字符数。 String.Length
计算字符数。你可能想要一些
Response.AddHeader("Content-Length",
Response.ContentEncoding.GetByteCount(output).ToString());
答案 1 :(得分:2)
您可能通过http请求传递XML?在这种情况下,数据作为字节传递。您需要以字节为单位的长度,而不是字符长度。因此,获取这些字节的长度,而不是字符串的长度。
在这种情况下,它将使用编码,可能是UTF16,但C#将其称为unicode。
您可以使用以下几种方法:
Encoding.Unicode.GetBytes(someString);
Encoding.Unicode.GetByteCount(someString);
答案 2 :(得分: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);
}