使用.NET 4.0,IIS 7.5(Windows Server 2008 R2)。我想流出一個大約10 MB的二進制內容。內容已經在MemoryStream中。我想知道IIS7是否會自動分塊輸出流。從接收流的客戶端,這兩種方法之間有任何區別:ASP.NET Streaming Output:1個單獨大塊vs X個小塊?
//#1: Output the entire stream in 1 single chunks
Response.OutputStream.Write(memoryStr.ToArray(), 0, (int) memoryStr.Length);
Response.Flush();
//#2: Output by 4K chunks
byte[] buffer = new byte[4096];
int byteReadCount;
while ((byteReadCount = memoryStr.Read(buffer, 0, buffer.Length)) > 0)
{
Response.OutputStream.Write(buffer, 0, byteReadCount);
Response.Flush();
}
在此先感謝您的任何幫助。
我沒有嘗試通過原始數據流的第二條建議。內存流實際上是從Web請求的響應流填充的。下面是代碼,
HttpWebRequest webreq = (HttpWebRequest) WebRequest.Create(this._targetUri);
using (HttpWebResponse httpResponse = (HttpWebResponse)webreq.GetResponse())
{
using (Stream responseStream = httpResponse.GetResponseStream())
{
byte[] buffer = new byte[4096];
int byteReadCount = 0;
MemoryStream memoryStr = new MemoryStream(4096);
while ((byteReadCount = responseStream.Read(buffer, 0, buffer.Length)) > 0)
{
memoryStr.Write(buffer, 0, byteReadCount);
}
// ... etc ... //
}
}
你認爲它可以安全地傳遞到responseStream Response.OutputStream.Write()?如果是的話,你能提出一個經濟的方法嗎?如何發送ByteArray +確切的流長度到Response.OutputStream.Write()?
您是否會多次提供該內容? – 2011-05-13 16:40:56
最有可能一次。 – Polymerase 2011-05-16 18:48:27