Tôi đang trong quá trình soạn dịch vụ WCF cho phép trang web ASP.Net truy xuất tệp (dựa trên this article). Vấn đề của tôi là khi tôi trả lại luồng, nó trống.Trả lại luồng từ File.OpenRead()
Để đơn giản, tôi đã cô lập mã vào một ứng dụng winforms đơn giản để thử và tìm thấy những gì vấn đề là với trở về một dòng suối và đây là đoạn code:
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);
}
Kết quả của mã này là buf
dài 12,587 byte (độ dài chính xác của tệp) nhưng nó chỉ chứa 0.
Tài liệu Word mở ra không có vấn đề gì nếu tôi thử, tôi có thiếu điều gì đó hiển nhiên không?
Bạn có phải là quản trị viên không? Hãy thử kéo tài liệu từ 'Tài liệu của tôi' hoặc một thư mục khác không phải là thư mục gốc. – keyboardP
@keyboard - lời khuyên tốt nhưng nó sẽ tạo ra một ngoại lệ, không phải '0' và độ dài chính xác. –
@ HenkHolterman - À vâng, đó là sự thật. – keyboardP