none
Serialize FileUpload RRS feed

  • Pregunta

  • Tengo una aplicación en ASP.Net utilizando VB.Net, agregue en el web.config:

        <sessionState

                mode="SQLServer"

                sqlConnectionString="data source=server\base;user id=super; password=12345678"

                cookieless="false"       

                timeout="3000"

        />

    Pero ahora cuando ejecuto la aplicación y selecciono algún campo en algún FileUpload y hago un postback me aparece el siguiente errot:

    Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects,
    and as result non-serializable objects or MarshalByref object are not permitted.
    The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.

    [SerializationException: Type 'System.web.UI.Webcontrols.FileUpload' in Assemby 'System.web'

    He buscado en internet y me indica que el error es en FileUpload del web.config, pero no se como serializar los FileUpload.

    Saludos

    lunes, 4 de abril de 2016 21:16

Respuestas

  • Como te comento lo que podrías hacer es guardar el nombre y el contenido de los ficheros.

    Si lo que quieres es serializar el FileUpload tendrías que crear tú mismo el método pero no me parece la mejor solución, especialmente cuando lo único que necesitas guardar es el archivo, no el control.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Hugosoft lunes, 4 de abril de 2016 22:15
    lunes, 4 de abril de 2016 22:11
  • Ok, seguire tu consejo.

    Saludos

    • Marcado como respuesta Hugosoft miércoles, 6 de abril de 2016 15:20
    lunes, 4 de abril de 2016 22:15

Todas las respuestas

  • Pero ¿estás intentando almacenar en una variable de sesión el control FileUpload o su contenido?


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 4 de abril de 2016 21:23
  • Guardo el Control FileUpload:

            If Me.FileUpload1.HasFile Then
                Session("variable1") = Me.FileUpload1
            End If

    lunes, 4 de abril de 2016 21:31
  • No entiendo. ¿Y para qué quieres guardar un control en una variable de sesión?

    Si lo que quieres es mantener el archivo subido lo lógico es que guardes el archivo en disco o en base de datos y en la variable de sesión una referencia a dicho archivo.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 4 de abril de 2016 21:34
  • Como manejo varios FileUpload y algunos botones hace postback pierdo el archivo seleccionado en el fileupload, al guarda el control fileupload y hacer un postback guardo la ruta del archivo seleccionado en un label para que posteriormente cuando grabe el registro llame el contenido del label y el archivo se grabar en el disco.

            If Me.FileUpload1.HasFile = False And Me.Label1.Text.Trim.Length > 0 Then
                Me.FileUpload1 = Session("variable1")
            End If
            If Me.FileUpload1.FileName <> "" Then
                savePath = Session("variable1") 
            End If

    lunes, 4 de abril de 2016 21:42
  • Yo lo que haría es guardar el archivo incluido en el FileUpload en una carpeta temporal y guardar en una variable de sesión el nombre del archivo.

    O como mucho almacenar el contenido del fichero, pero no el control completo.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    lunes, 4 de abril de 2016 21:53
  • Al inicio eso fue lo que hice pero al guardar el archivo en una carpeta temporal se tarda demasiado (10mb a 20mb) y se seleccionan como 20 archivos.

    No existe manera de serializar FileUpload?

    Como solución temporal borre : <sessionState  mode="SQLServer" .../> del web.config

    lunes, 4 de abril de 2016 22:04
  • Como te comento lo que podrías hacer es guardar el nombre y el contenido de los ficheros.

    Si lo que quieres es serializar el FileUpload tendrías que crear tú mismo el método pero no me parece la mejor solución, especialmente cuando lo único que necesitas guardar es el archivo, no el control.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta Hugosoft lunes, 4 de abril de 2016 22:15
    lunes, 4 de abril de 2016 22:11
  • Ok, seguire tu consejo.

    Saludos

    • Marcado como respuesta Hugosoft miércoles, 6 de abril de 2016 15:20
    lunes, 4 de abril de 2016 22:15