Возврат потока из File.OpenRead()

Я в процессе написания службы WCF, которая позволит веб-сайту ASP.Net получать файлы (на основе этой статьи). Моя проблема в том, что когда я возвращаю поток, он пуст.

Для простоты я изолировал код в простом приложении 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 открывается без проблем, если я попробую, я упускаю что-то очевидное?

49
задан GrandMasterFlush 5 January 2012 в 00:09
поделиться