【发布时间】:2012-02-03 05:12:05
【问题描述】:
我正在编写允许 ASP.Net 网站检索文件的 WCF 服务(基于this article)。我的问题是当我返回流时,它是空白的。
为简单起见,我将代码隔离到一个简单的 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 以外的其他文件夹中提取文档。
-
@keyboard - 很好的建议,但它会产生异常,而不是
0s 和正确的长度。 -
@HenkHolterman - 是的,没错。
-
我在本地运行这个测试代码,所以这应该不是问题。我已经使用流式阅读器进行了快速测试,它可以毫无问题地访问文件。
标签: c# filestream