none
Error de red aspx con vb.net RRS feed

  • Pregunta

  • Buenas tardes, tengo una aplicación aspx que va a grabar un archivo que cargo con el objeto fileupload al visualizarlo en mi ambiente de desarrollo lo deja hacer, sin embargo al hacerlo ya publicado en mi servidor web, se ve que empieza a descargar el archivo pero se interrumpe y queda un un error de red

    este es el codigo que tengo para ver el archivo 

        Protected Sub btnVer_Click(sender As Object, e As EventArgs) Handles btnVer.Click
            Dim path As String
            Dim path1 As String
            path = Server.MapPath("~/")
            flUpload.SaveAs(path + flUpload.FileName)
            path1 = path + flUpload.FileName


            Response.ContentType = "application/pdf"
            Response.AddHeader("Content-disposition", "attachment; filename=" & flUpload.FileName)
            Response.ContentType = “application/octet-stream”
            Response.WriteFile(path1)
            Response.Flush()
            Response.Close()

        End Sub



    como lo indico en desarrollo no me genera ese problema.


    la idea es poder visualizar el archivo antes de grabarlo, por eso dejo el codigo del boton que denomino ver.

    ¿como podre revisar?


    de antemano agradezco su colaboración  


    jueves, 18 de octubre de 2018 22:49

Todas las respuestas

  • Normalmente una aplicación web desplegada en producción no tiene permiso para grabar dentro del propio directorio en el que está la aplicación. En desarrollo eso no es problema porque se ejecuta con tu propia cuenta y tiene todos los permisos sobre su carpeta.

    Esto se hace por razones de seguridad. Si tienes acceso al servidor, puedes usar el explorador de archivos de Windows para cambiar los permisos, pero no es algo muy recomendable. También puedes asignar en otro sitio una subcarpeta con permisos suficientes, pero una vez más requiere que tengas acceso al servidor para cambiar esos permisos.

    Si solo lo haces para mostrar el archivo antes de grabarlo (en base de datos, presumo), te sugiero que no lo salves en disco sino que lo mantengas en memoria. Desde el fileUpload, en lugar de usar el SaveAs, usa el Content para quedarte con los bytes del archivo, pásalos a un array de bytes y guárdalo en el Session. Después usas un Response.BinaryWrite para devolver esos bytes en lugar del Response.WriteFile. Si te confirman que el archivo es correcto, lo salvas directamente desde el array que guardaste en el Session.

    byte[] contenido = new byte[flUpload.PostedFile.ContentLength];

    flUpload.PostedFile.InputStream.Read(contenido, 0, contenido.Length);

    viernes, 19 de octubre de 2018 13:05