Estoy en el proceso de escribir un servicio WCF que permitirá que un sitio web ASP.Net recupere archivos (basado en this article). Mi problema es que cuando devuelvo la transmisión, está en blanco.Devolución de una secuencia desde File.OpenRead()
Por simplicidad, he aislado el código en una simple aplicación de Windows Forms para tratar de encontrar cuál es el problema con la devolución de una corriente y este es el código:
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);
}
El resultado de este código es que buf
tiene 12,587 bytes de longitud (la longitud correcta del archivo) pero solo contiene 0.
El documento de Word se abre sin problemas si lo intento, ¿me falta algo obvio?
¿Se está ejecutando como administrador? Intente extraer el documento de 'Mis documentos' u otra carpeta que no sea root. – keyboardP
@keyboard - buen consejo pero produciría una excepción, no '0's y longitud correcta. –
@HenkHolterman - Ah sí, eso es cierto. – keyboardP