获取Response.output大小?

时间:2011-12-05 12:59:04

标签: asp.net

我的代码现在是这样的:

var xmlSerializer = new XmlSerializer(typeof(DataSet));
xmlSerializer.Serialize(Response.Output, ds);

之后我想显示大小,但这给了我一个错误:

Response.AddHeader("Content-Length", Response.OutputStream.Length.ToString());

错误是

NotSupportedException was unhandled by user code

2 个答案:

答案 0 :(得分:2)

Response.OutputStream不支持Length属性;你不能得到长度。一个问题是,Stream如果通常情况下Response已启用,则Keep-Alive可能会比Length更长。这就是为什么你根本得不到Content-Length ......但是......

另请注意,此处的Stream不仅仅发送内容 - 它还会发送标题。这使得完全不适合使用你希望如何使用它(因为你得到的Length标题是不正确的。)所以,即使你可以得到Stream,它也不会是你想要的。

无论如何,这是不可能的:你试图设置的标题是 的一部分{{1}}会发生什么......看到问题?

但是,FosterZ给了你一条不同的路线试图解决这个问题;你需要得到你真正想要测量的长度 - 而不是流。

答案 1 :(得分:1)

我在做什么?以下矿井代码如下所示,您可能会得到一些想法或提示:

string output = encoding.GetString(memoryStream.ToArray());
memoryStream  = new MemoryStream(output.Length);

byte[] buffer = encoding.GetBytes(output);
//buffer.Length(); is this the length you want ?