none
No puedo escribir en un archivo con el cliente integrado. RRS feed

  • Pregunta

  • Buenas,

    Mi problema es el siguiente, tengo una aplicación cliente con una interfaz gráfica, la cual si ejecuto desde .exe que crea en las carpeta de release puedo escribir en el archivo de logo, pero a la hora de que otra aplicación muestre esta interfaz no puede escribir en el archivo. Parece un problema de permisos pero no consigo dar error. 

    Gracias por vuestro tiempo.

    Saludos.

    miércoles, 11 de febrero de 2015 11:59

Respuestas

  • El uso de FileInfo de esa forma me es sospechoso.  Pero bueno, debido al mensaje de error, yo empezaría por validar si ConfigurationManager está devolviendo los valores esperados.  Use MessageBox.Show() para mostrar las rutas devueltas por ConfigurationManager.  Yo diría que ese es el paso 1.

    Jose R. MCP
    Code Samples

    jueves, 12 de febrero de 2015 13:52
    Moderador

Todas las respuestas

  • >>puedo escribir en el archivo de logo

    archivo de logo ? te refieres a un log

    >>pero a la hora de que otra aplicación muestre esta interfaz no puede escribir en el archivo

    recuerda que cuando una aplicacion accede a un archivo queda lockeado, debes liberarlo para que otra aplicacion pueda acceder

    no se como codigicas el log ,pero si usas un bloque "using" con el StreamWriter al salir del bloque el archivo se libera

    using(StreamWriter stream = new StreamWriter("ruta")){
    
       //aqui escribes
    
    }


    al salir del using el archivo podra ser acedido por otra aplicacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 11 de febrero de 2015 12:55
  • Si perdona me refería a un archivo de log y en realidad no es que no pueda escribir sino que no puede crear el archivo.

    No creo que el problema sea que el archivo se queda bloqueado ya que siempre cierro la aplicación antes de utilizar la otra. La diferencia es simplemente que al iniciar directamente desde el archivo ejecutable del paquete de la aplicación no hay problema y en el momento que se utiliza desde otra aplicación no es capaz de ejecutar el código sin que falle y aparezca en el mensaje de la excepción "FileName no puede ser nulo".

    El código es el siguiente: 

     try
                {
                    var f = new FileInfo(ConfigurationManager.AppSettings["LogPath"]);
                    if (f.Directory != null && !f.Directory.Exists)
                    {
                        f.Directory.Create();
                        NetLoggingServiceAps.LogTrace("Directorio de Log creado");
                    }
                    f = new FileInfo(ConfigurationManager.AppSettings["LogUserPath"]);
                    if (f.Directory == null || f.Directory.Exists) return;
                    f.Directory.Create();
                    NetLoggingServiceAps.LogTrace("Directorio de Log de Usuario creado");
                }
                catch (Exception)
                {
                    MessageBox.Show("Error al crear el fichero de Log", "PlanDB");
                }


    • Editado Aivalo miércoles, 11 de febrero de 2015 17:02
    miércoles, 11 de febrero de 2015 15:28
  • El uso de FileInfo de esa forma me es sospechoso.  Pero bueno, debido al mensaje de error, yo empezaría por validar si ConfigurationManager está devolviendo los valores esperados.  Use MessageBox.Show() para mostrar las rutas devueltas por ConfigurationManager.  Yo diría que ese es el paso 1.

    Jose R. MCP
    Code Samples

    jueves, 12 de febrero de 2015 13:52
    Moderador
  • Realizando esto último, he podido ver que no podía leer las variables del archivo. Lo raro es que una si ha conseguido leerla pero el resto no. Es un caso un tanto extraño.
    martes, 17 de febrero de 2015 14:33