我正在編寫一個WCF服務,它將允許ASP.Net網站檢索文件(基於this article)。我的問題是,當我返回流時,它是空白的。從File.OpenRead()返回一個流
爲簡單起見,我已經分離出的代碼放到一個簡單的WinForms應用程序,試圖找到問題是返回一個流什麼,這是代碼:
private Stream TestStream()
{
Stream fs = File.OpenRead(@"c:\testdocument.docx");
return fs;
}
// This method converts the filestream into a byte array so that when it is
// used in my ASP.Net project the file can be sent using response.Write
private void Test()
{
System.IO.MemoryStream data = new System.IO.MemoryStream();
System.IO.Stream str = TestStream();
str.CopyTo(data);
byte[] buf = new byte[data.Length];
data.Read(buf, 0, buf.Length);
}
這段代碼的結果是, buf
長度爲12,587字節(文件的正確長度),但它只包含0。
如果我嘗試使用Word文檔可以毫無問題地打開,我是否錯過了一些明顯的東西?
您是否以管理員身份運行?嘗試從「我的文檔」或除root以外的其他文件夾中提取文檔。 – keyboardP 2012-01-05 11:13:46
@keyboard - 很好的建議,但它會產生一個例外,而不是'0'和正確的長度。 – 2012-01-05 11:16:35
@HenkHolterman - 是的,的確如此。 – keyboardP 2012-01-05 11:17:23