2011-12-05 97 views
-5

我的代碼是現在這個樣子:獲取Response.output大小?

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

基礎流不支持'Length'。你可以做的事情不多。 – Oded

+0

@Oded我知道它不支持長度,這就是爲什麼我問我如何可以得到他的Response.Ouput對象的大小。你的迴應沒有增加任何有價值的東西。 – NomenNescio

回答

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 ? 
2

Response.OutputStream不支持Length屬性;你無法獲得長度。一個問題是,Stream可能比Response長,如果通常情況下,Keep-Alive被啓用。這就是爲什麼你根本得不到Length ......但是...

另外請注意,這裏的流發送的不僅僅是內容 - 它還發送標題。這使得它完全不適合使用你希望使用它(因爲你的結果Content-Length標題將是不正確的。)所以,即使你可以得到Length,它不會是你想要的。

無論如何,這是不可能的:你試圖設置的標題是的一部分會發生什麼Stream ....看到問題?

FosterZ給了你不同的路線去嘗試解決這個問題,你需要得到你真正想測量的長度 - 而不是流。

+0

那麼無法傳遞生成文件的長度? – NomenNescio

+0

您需要傳遞*文件*的長度。這不是你在做什麼。你正在寫文件的'Stream'與文件本身不一樣。獲取*文件本身*的長度傳遞給該代碼。 –