none
Como Mover o Renombrar directorio ? (peticion ejecutando en servidor) RRS feed

  • Pregunta

  • Amigos, tengo este metodo:

    private string renombrarDirectorio(){
            string newRegVie = Txt_RegistroVie.Text;
            string root = "~/Pdfs_Subidos/";
            string sourceDirectory = Server.MapPath(root+ regVieAnterior);
            string finalDirectory = Server.MapPath(root + newRegVie);
            string finalRegVie;
            
            var matched = String.Equals(regVieAnterior,newRegVie,StringComparison.OrdinalIgnoreCase);
            if(matched){
                // El registro Vie guardado es igual al que se va a guardar
                finalRegVie = regVieAnterior;
            }else
            {
                // El registro Vie guardado es diferente al que se va a guardar
                if (Directory.Exists(estado.Text))
                {
                    estado.Text = "El directorio si existe";
                    try
                    {
                        Directory.Move(sourceDirectory, finalDirectory);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else
                {
                    estado.Text = "El directorio no existe";
                }
                
                finalRegVie = newRegVie;
            }
    
            return finalRegVie;
        }

    Resulta que no veo ningun cambio. La comparacion funciona, la verificacion de si existe el directorio, tambien funciona.

    Entonces no se que falta.

    Gracias por su ayuda.

    miércoles, 8 de noviembre de 2017 21:45

Respuestas

  • sourceDirectory = 'C:\inetpub\wwwrot\ProyectosGeomatica\Pdfs_subidos\4343'
    
    finalDirectory = 'C:\inetpub\wwwrot\ProyectosGeomatica\Pdfs_subidos\4949'
    
    //finalDirectory deberia tener el regVie que guardo cuando doy clic en actualizar


    Brayan Guerrero

    domingo, 12 de noviembre de 2017 0:49
  • Exacto Jorge, no puede no, NO deberia :D

    Pero encontre algo que parece estar relacionado:

    Get current TextBox Text value in a button onClick event - asp.net

    Tiene que ver con el IsPostBack, que la verdad no entiendo mucho por no decir nada, de eso.


    Brayan Guerrero

    martes, 14 de noviembre de 2017 19:57
  • using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Windows.Forms;
    
    public partial class zModificar_ModInfoGeneral : System.Web.UI.Page
    {
        Eliminacion elm = new Eliminacion();
        String nombre, valor, fechapropuesta, fechaVie;
        string regVieAnterior;
        bool confirm;
        protected void Page_Load(object sender, EventArgs e)
        {
    
            nombre = Txt_Nombre.Text;
            valor = Txt_Valor.Text;
            //fechapropuesta = Txt_fechaPropuesta.Text;
            fechaVie = Txt_fechaVie.Text;
            
            if (Request.QueryString["ID_Proy"] != null && Session["ID"] == null)
            {
                TablaContratos contratos = new TablaContratos();
                int idproy1 = Convert.ToInt32(Request.QueryString["ID_Proy"]);
                Session["ID"] = idproy1;
                Mostrar(idproy1);
                int id_contrato = contratos.Consultar_Id_Contrato(idproy1);
                if(id_contrato != 0)
                {
                    Session["ID_Contrato"] = contratos.Consultar_Id_Contrato(idproy1);
                }
                else
                {
                    Session["ID_Contrato"] = null;
                }
            }
    
            else if (Session["ID"] != null)
            {
                int id_proy2 = Convert.ToInt32(Session["ID"]);
                Mostrar(id_proy2);
            }
    
            ClientScript.GetPostBackEventReference(this, string.Empty);//This is important to make the "__doPostBack()" method, works properly
    
            if (Request.Form["__EVENTTARGET"] == "EliminarProyecto")
            {
                //call the method
                EliminarProyecto();
            }
            estado.Text = Server.MapPath("~/Pdfs_Subidos/" + Txt_RegistroVie.Text);
            regVieAnterior = Txt_RegistroVie.Text;
        }
    
        protected void Btn_Actualizar_Click(object sender, EventArgs e)
        {
            Btn_Modificar.Enabled = true;
            Btn_Actualizar.Enabled = false;
            TablaProyectos proyecto = new TablaProyectos();
            string Nombre = nombre;
            Decimal Valor = Convert.ToDecimal(valor);
            //DateTime Fechapropuesta = Convert.ToDateTime(fechapropuesta);
            DateTime Fechavie = Convert.ToDateTime( fechaVie);
            int id_proy = Convert.ToInt32(Session["ID"]);
            string regVie = renombrarDirectorio();
            proyecto.actualizar(id_proy, Nombre, Valor, Fechavie, regVieAnterior);
            Response.Redirect("~/Modulo_Modificar/ModInfoGeneral.aspx");
        }
    
        protected void Mostrar(int id_proy)
        {
            int id_proyecto = id_proy;
            TablaProyectos proyectos = new TablaProyectos();
            String[] DatosProyecto = proyectos.DatosProyecto(id_proyecto);
    
            Session["Id_RegistroVie"] = DatosProyecto[7];
            Session["NombreProyecto"] = DatosProyecto[0];
            Session["ValorProyecto"] = DatosProyecto[1];
            Txt_Nombre.Text = DatosProyecto[0];
            string cad = DatosProyecto[1].Replace(",0000","");
            Txt_Valor.Text = cad;
            Txt_RegistroVie.Text = DatosProyecto[7];
    
            DateTime fechaVie = Convert.ToDateTime(DatosProyecto[8]);
            Txt_fechaVie.Text = String.Format("{0:dd/MM/yyyy}", fechaVie);
    
            //DateTime FechaPropuesta = Convert.ToDateTime(DatosProyecto[3]);
            //Txt_fechaPropuesta.Text = String.Format("{0:dd/MM/yyyy}", FechaPropuesta);
        }
    
        protected void Btn_Modificar_Click(object sender, EventArgs e)
        {
            Txt_Nombre.Enabled = true;
            Txt_Valor.Enabled = true;
            //Txt_fechaPropuesta.Enabled = true;
            Txt_fechaVie.Enabled = true;
            Btn_Actualizar.Enabled = true;
            Btn_Modificar.Enabled = false;
            Txt_RegistroVie.Enabled = true;
        }
    
        private string renombrarDirectorio(){
            string newRegVie = Txt_RegistroVie.Text;
            string root = "~/Pdfs_Subidos/";
            string sourceDirectory = Server.MapPath(root+ regVieAnterior);
            string finalDirectory = Server.MapPath(root + newRegVie);
            string finalRegVie;
            
            var matched = String.Equals(regVieAnterior,newRegVie,StringComparison.OrdinalIgnoreCase);
            if(matched){
                // El registro Vie guardado es igual al que se va a guardar
                finalRegVie = regVieAnterior;
            }else
            {
                // El registro Vie guardado es diferente al que se va a guardar
                finalRegVie = newRegVie + " sale del else y ejecuto el exists";
                if (Directory.Exists(sourceDirectory))
                {
                    try
                    {
                        Directory.Move(sourceDirectory, finalDirectory);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else
                {
                    Console.WriteLine("El directorio ya existe");
                }
                
                
            }
    
            return finalRegVie;
        }
    
        protected void Btn_Probar_Click(object sender, EventArgs e)
        {
            estado.Text = renombrarDirectorio();
        }
            
        protected void Btn_Terminar_Click(object sender, EventArgs e)
        {
            if (Session["ID"] != null)
                Session.Remove("ID");
    
            if (Session["Id_RegistroVie"] != null)
                Session.Remove("Id_RegistroVie");
            
            if (Session["NombreProyecto"] != null)
                Session.Remove("NombreProyecto");
            
            if (Session["ID_Contrato"] != null)
                Session.Remove("ID_Contrato");
            
            if (Session["ID_Producto"] != null)
                Session.Remove("ID_Producto");
            
            if (Session["ID_acta"] != null)
                Session.Remove("ID_acta");
    
            if (Session["ValorProyecto"] != null)
                Session.Remove("ValorProyecto");
    
            if (Session["Ultimo"] != null)
                Session.Remove("Ultimo");
    
            if (Session["ID_adicion"] != null)
                Session.Remove("ID_adicion");
    
            if (Session["ID_producto"] != null)
                Session.Remove("ID_producto");
            
            Response.Redirect("~/Modulo_Inicio/Lista.aspx");
        }
        protected void Btn_Eliminar_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "deleteAlert();", true);
        }
        public void EliminarProyecto()
        {
            
            int idproy = Convert.ToInt32(Request.QueryString["ID_Proy"]);
            bool borrado;
            borrado = elm.eliminar(idproy);
            if (borrado)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "Redireccionar();", true);
            }
        }
    }

    Listo Jorge, las observaciones que hiciste tienen que ver con la manera en la que forcé el método para saber si funcionaba, efectivamente funcionó, como te comente arriba.

    Si notas en este código, regVieAnterior toma el valor de Txt_RegistroVie en el Page_Load, para que cuando haga clic en Modificar, regVieAnterior tenga dicho valor antes de modificarse, y cuando de clic en Actualizar, la idea es tomar el valor de Txt_RegistroVie después de modificado (en caso de que se haya escrito otro valor).

    Esta seria la manera definitiva (que creo yo) para que el método funcione, pero como ya te he mencionado, no lo hace de esta manera, sino que toma el mismo valor antes y después.


    Brayan Guerrero

    viernes, 10 de noviembre de 2017 18:11

Todas las respuestas

  • Buenas,

    Te genera alguna excepcion?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    miércoles, 8 de noviembre de 2017 22:30
  • Me genero la excepcion de que la ruta de origen y la de destino ya existia. Entonces revise el codigo y me di cuenta que tengo un error en cuanto al flujo de la informacion en la pagina (que aun no he podido resolver). Para comprobar que la funcion Directory.Move si funciona, force el programa, le ingrese dos valores diferentes para los directorios final y source, de manera que si renombro el directorio final

    jueves, 9 de noviembre de 2017 20:12
  • Okey, 

    me alegra oir que al menos, una parte del problema se ha solucionado!!!

    Podemos ayudarte con el otro error?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 9 de noviembre de 2017 20:23
  • using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Windows.Forms;
    
    public partial class zModificar_ModInfoGeneral : System.Web.UI.Page
    {
        Eliminacion elm = new Eliminacion();
        String nombre, valor, fechapropuesta, fechaVie;
        string regVieAnterior;
        bool confirm;
        protected void Page_Load(object sender, EventArgs e)
        {
    
            nombre = Txt_Nombre.Text;
            valor = Txt_Valor.Text;
            //fechapropuesta = Txt_fechaPropuesta.Text;
            fechaVie = Txt_fechaVie.Text;
            
            if (Request.QueryString["ID_Proy"] != null && Session["ID"] == null)
            {
                TablaContratos contratos = new TablaContratos();
                int idproy1 = Convert.ToInt32(Request.QueryString["ID_Proy"]);
                Session["ID"] = idproy1;
                Mostrar(idproy1);
                int id_contrato = contratos.Consultar_Id_Contrato(idproy1);
                if(id_contrato != 0)
                {
                    Session["ID_Contrato"] = contratos.Consultar_Id_Contrato(idproy1);
                }
                else
                {
                    Session["ID_Contrato"] = null;
                }
            }
    
            else if (Session["ID"] != null)
            {
                int id_proy2 = Convert.ToInt32(Session["ID"]);
                Mostrar(id_proy2);
            }
    
            ClientScript.GetPostBackEventReference(this, string.Empty);//This is important to make the "__doPostBack()" method, works properly
    
            if (Request.Form["__EVENTTARGET"] == "EliminarProyecto")
            {
                //call the method
                EliminarProyecto();
            }
            estado.Text = Server.MapPath("~/Pdfs_Subidos/" + Txt_RegistroVie.Text);
            regVieAnterior = Txt_RegistroVie.Text;
        }
    
        protected void Btn_Actualizar_Click(object sender, EventArgs e)
        {
            Btn_Modificar.Enabled = true;
            Btn_Actualizar.Enabled = false;
            TablaProyectos proyecto = new TablaProyectos();
            string Nombre = nombre;
            Decimal Valor = Convert.ToDecimal(valor);
            //DateTime Fechapropuesta = Convert.ToDateTime(fechapropuesta);
            DateTime Fechavie = Convert.ToDateTime( fechaVie);
            int id_proy = Convert.ToInt32(Session["ID"]);
            //string regVie = renombrarDirectorio();
            proyecto.actualizar(id_proy, Nombre, Valor, Fechavie, regVieAnterior);
            Response.Redirect("~/Modulo_Modificar/ModInfoGeneral.aspx");
        }
    
        protected void Mostrar(int id_proy)
        {
            int id_proyecto = id_proy;
            TablaProyectos proyectos = new TablaProyectos();
            String[] DatosProyecto = proyectos.DatosProyecto(id_proyecto);
    
            Session["Id_RegistroVie"] = DatosProyecto[7];
            Session["NombreProyecto"] = DatosProyecto[0];
            Session["ValorProyecto"] = DatosProyecto[1];
            Txt_Nombre.Text = DatosProyecto[0];
            string cad = DatosProyecto[1].Replace(",0000","");
            Txt_Valor.Text = cad;
            Txt_RegistroVie.Text = DatosProyecto[7];
    
            DateTime fechaVie = Convert.ToDateTime(DatosProyecto[8]);
            Txt_fechaVie.Text = String.Format("{0:dd/MM/yyyy}", fechaVie);
    
            //DateTime FechaPropuesta = Convert.ToDateTime(DatosProyecto[3]);
            //Txt_fechaPropuesta.Text = String.Format("{0:dd/MM/yyyy}", FechaPropuesta);
        }
    
        protected void Btn_Modificar_Click(object sender, EventArgs e)
        {
            Txt_Nombre.Enabled = true;
            Txt_Valor.Enabled = true;
            //Txt_fechaPropuesta.Enabled = true;
            Txt_fechaVie.Enabled = true;
            Btn_Actualizar.Enabled = true;
            Btn_Modificar.Enabled = false;
            Txt_RegistroVie.Enabled = true;
        }
    
        private string renombrarDirectorio(){
            string newRegVie = "4949";
            this.regVieAnterior = "4989";
            string root = "~/Pdfs_Subidos/";
            string sourceDirectory = Server.MapPath(root+ regVieAnterior);
            string finalDirectory = Server.MapPath(root + newRegVie);
            string finalRegVie;
            
            var matched = String.Equals(regVieAnterior,newRegVie,StringComparison.OrdinalIgnoreCase);
            if(matched){
                // El registro Vie guardado es igual al que se va a guardar
                finalRegVie = regVieAnterior + " entro al matched";
            }else
            {
                // El registro Vie guardado es diferente al que se va a guardar
                finalRegVie = newRegVie + " sale del else y ejecuto el exists";
                if (Directory.Exists(sourceDirectory))
                {
                    finalRegVie = "esta en el if exists";
                    try
                    {
                        Directory.Move(sourceDirectory, finalDirectory);
                        finalRegVie = "directorio movido";
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        finalRegVie = "ERROR: "+e.Message+"\n "+sourceDirectory+" -- "+finalDirectory;
                    }
                }
                else
                {
                    finalRegVie = "El directorio no existe";
                }
                
                
            }
    
            return finalRegVie;
        }
    
        protected void Btn_Probar_Click(object sender, EventArgs e)
        {
            estado.Text = renombrarDirectorio();
        }
            
        protected void Btn_Terminar_Click(object sender, EventArgs e)
        {
            if (Session["ID"] != null)
                Session.Remove("ID");
    
            if (Session["Id_RegistroVie"] != null)
                Session.Remove("Id_RegistroVie");
            
            if (Session["NombreProyecto"] != null)
                Session.Remove("NombreProyecto");
            
            if (Session["ID_Contrato"] != null)
                Session.Remove("ID_Contrato");
            
            if (Session["ID_Producto"] != null)
                Session.Remove("ID_Producto");
            
            if (Session["ID_acta"] != null)
                Session.Remove("ID_acta");
    
            if (Session["ValorProyecto"] != null)
                Session.Remove("ValorProyecto");
    
            if (Session["Ultimo"] != null)
                Session.Remove("Ultimo");
    
            if (Session["ID_adicion"] != null)
                Session.Remove("ID_adicion");
    
            if (Session["ID_producto"] != null)
                Session.Remove("ID_producto");
            
            Response.Redirect("~/Modulo_Inicio/Lista.aspx");
        }
        protected void Btn_Eliminar_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "deleteAlert();", true);
        }
        public void EliminarProyecto()
        {
            
            int idproy = Convert.ToInt32(Request.QueryString["ID_Proy"]);
            bool borrado;
            borrado = elm.eliminar(idproy);
            if (borrado)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "Redireccionar();", true);
            }
        }
    }

    Tuve que copiar todo el code behind del archivo.

    Rapidamente la explicacion es la siguiente: Hay 4 botones en mi pagina aspx, Modificar, Actualizar, Terminar y Eliminar de los cuales los 2 primeros son los implicados en este caso.  Modificar habilita la edicion de los textbox (TextBox.Enabled = true), luego modifico un campo llamado FEX.04 VIE, el cual lleva el registro que habia (uno anterior). Cuando le doy clic en Actualizar, lo que espero es que el note la diferencia entre el registro anterior (cuando los textbox estaban deshabilitados) y el registro nuevo (que edite antes de actualizar), para que entonces renombre el directorio con el registro nuevo que acabe de modificar. En vez de eso, al darle actualizar, el los toma como que son iguales, es por eso la exepcion que genero.

    Disculpa Jorge que no adjunte imagen, pero el foro no me lo permitio.

    jueves, 9 de noviembre de 2017 20:40
  • Olvidé mencionar que solo pasa con ese campo, los demás si se actualizan correctamente si son editados.
    jueves, 9 de noviembre de 2017 20:48
  • Buenas,

    Estoy mirando tu código, y no veo donde modificas el registro nuevo

    string newRegVie = "4949";
    this.regVieAnterio = "4989";

    Esas líneas lo que tienen es un registro viejo a nivel de form, pero el registro nuevo lo igualas a 4949 siempre, supongo que ahí en realidad lo que te falta es donde asignas el nuevo valor, por otro lado, según tu código, el registro viejo siempre sera 4989 al hacer la operación, ya que lo asignas al inicio del proceso. 

    Por último, desconozco el tema de programación web, así que no se si dos path virtuales pueden apuntar a la misma ruta física, pero en tu comprobación de repetido, pienso que sería mejor si la haces asi

    var matched = String.Equals(sourceDirectory,finalDirectory,StringComparison.OrdinalIgnoreCase);
            if(matched){

    Ya que así vas a comparar la ruta final directamente. 

    Revisa lo que te he comentado de las asignaciones, haz ese cambio en el if, y nos comentas el resultado. 

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    jueves, 9 de noviembre de 2017 22:31
  • using System;
    using System.IO;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Windows.Forms;
    
    public partial class zModificar_ModInfoGeneral : System.Web.UI.Page
    {
        Eliminacion elm = new Eliminacion();
        String nombre, valor, fechapropuesta, fechaVie;
        string regVieAnterior;
        bool confirm;
        protected void Page_Load(object sender, EventArgs e)
        {
    
            nombre = Txt_Nombre.Text;
            valor = Txt_Valor.Text;
            //fechapropuesta = Txt_fechaPropuesta.Text;
            fechaVie = Txt_fechaVie.Text;
            
            if (Request.QueryString["ID_Proy"] != null && Session["ID"] == null)
            {
                TablaContratos contratos = new TablaContratos();
                int idproy1 = Convert.ToInt32(Request.QueryString["ID_Proy"]);
                Session["ID"] = idproy1;
                Mostrar(idproy1);
                int id_contrato = contratos.Consultar_Id_Contrato(idproy1);
                if(id_contrato != 0)
                {
                    Session["ID_Contrato"] = contratos.Consultar_Id_Contrato(idproy1);
                }
                else
                {
                    Session["ID_Contrato"] = null;
                }
            }
    
            else if (Session["ID"] != null)
            {
                int id_proy2 = Convert.ToInt32(Session["ID"]);
                Mostrar(id_proy2);
            }
    
            ClientScript.GetPostBackEventReference(this, string.Empty);//This is important to make the "__doPostBack()" method, works properly
    
            if (Request.Form["__EVENTTARGET"] == "EliminarProyecto")
            {
                //call the method
                EliminarProyecto();
            }
            estado.Text = Server.MapPath("~/Pdfs_Subidos/" + Txt_RegistroVie.Text);
            regVieAnterior = Txt_RegistroVie.Text;
        }
    
        protected void Btn_Actualizar_Click(object sender, EventArgs e)
        {
            Btn_Modificar.Enabled = true;
            Btn_Actualizar.Enabled = false;
            TablaProyectos proyecto = new TablaProyectos();
            string Nombre = nombre;
            Decimal Valor = Convert.ToDecimal(valor);
            //DateTime Fechapropuesta = Convert.ToDateTime(fechapropuesta);
            DateTime Fechavie = Convert.ToDateTime( fechaVie);
            int id_proy = Convert.ToInt32(Session["ID"]);
            string regVie = renombrarDirectorio();
            proyecto.actualizar(id_proy, Nombre, Valor, Fechavie, regVieAnterior);
            Response.Redirect("~/Modulo_Modificar/ModInfoGeneral.aspx");
        }
    
        protected void Mostrar(int id_proy)
        {
            int id_proyecto = id_proy;
            TablaProyectos proyectos = new TablaProyectos();
            String[] DatosProyecto = proyectos.DatosProyecto(id_proyecto);
    
            Session["Id_RegistroVie"] = DatosProyecto[7];
            Session["NombreProyecto"] = DatosProyecto[0];
            Session["ValorProyecto"] = DatosProyecto[1];
            Txt_Nombre.Text = DatosProyecto[0];
            string cad = DatosProyecto[1].Replace(",0000","");
            Txt_Valor.Text = cad;
            Txt_RegistroVie.Text = DatosProyecto[7];
    
            DateTime fechaVie = Convert.ToDateTime(DatosProyecto[8]);
            Txt_fechaVie.Text = String.Format("{0:dd/MM/yyyy}", fechaVie);
    
            //DateTime FechaPropuesta = Convert.ToDateTime(DatosProyecto[3]);
            //Txt_fechaPropuesta.Text = String.Format("{0:dd/MM/yyyy}", FechaPropuesta);
        }
    
        protected void Btn_Modificar_Click(object sender, EventArgs e)
        {
            Txt_Nombre.Enabled = true;
            Txt_Valor.Enabled = true;
            //Txt_fechaPropuesta.Enabled = true;
            Txt_fechaVie.Enabled = true;
            Btn_Actualizar.Enabled = true;
            Btn_Modificar.Enabled = false;
            Txt_RegistroVie.Enabled = true;
        }
    
        private string renombrarDirectorio(){
            string newRegVie = Txt_RegistroVie.Text;
            string root = "~/Pdfs_Subidos/";
            string sourceDirectory = Server.MapPath(root+ regVieAnterior);
            string finalDirectory = Server.MapPath(root + newRegVie);
            string finalRegVie;
            
            var matched = String.Equals(regVieAnterior,newRegVie,StringComparison.OrdinalIgnoreCase);
            if(matched){
                // El registro Vie guardado es igual al que se va a guardar
                finalRegVie = regVieAnterior;
            }else
            {
                // El registro Vie guardado es diferente al que se va a guardar
                finalRegVie = newRegVie + " sale del else y ejecuto el exists";
                if (Directory.Exists(sourceDirectory))
                {
                    try
                    {
                        Directory.Move(sourceDirectory, finalDirectory);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
                else
                {
                    Console.WriteLine("El directorio ya existe");
                }
                
                
            }
    
            return finalRegVie;
        }
    
        protected void Btn_Probar_Click(object sender, EventArgs e)
        {
            estado.Text = renombrarDirectorio();
        }
            
        protected void Btn_Terminar_Click(object sender, EventArgs e)
        {
            if (Session["ID"] != null)
                Session.Remove("ID");
    
            if (Session["Id_RegistroVie"] != null)
                Session.Remove("Id_RegistroVie");
            
            if (Session["NombreProyecto"] != null)
                Session.Remove("NombreProyecto");
            
            if (Session["ID_Contrato"] != null)
                Session.Remove("ID_Contrato");
            
            if (Session["ID_Producto"] != null)
                Session.Remove("ID_Producto");
            
            if (Session["ID_acta"] != null)
                Session.Remove("ID_acta");
    
            if (Session["ValorProyecto"] != null)
                Session.Remove("ValorProyecto");
    
            if (Session["Ultimo"] != null)
                Session.Remove("Ultimo");
    
            if (Session["ID_adicion"] != null)
                Session.Remove("ID_adicion");
    
            if (Session["ID_producto"] != null)
                Session.Remove("ID_producto");
            
            Response.Redirect("~/Modulo_Inicio/Lista.aspx");
        }
        protected void Btn_Eliminar_Click(object sender, EventArgs e)
        {
            ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "deleteAlert();", true);
        }
        public void EliminarProyecto()
        {
            
            int idproy = Convert.ToInt32(Request.QueryString["ID_Proy"]);
            bool borrado;
            borrado = elm.eliminar(idproy);
            if (borrado)
            {
                ScriptManager.RegisterStartupScript(this, GetType(), "Popup", "Redireccionar();", true);
            }
        }
    }

    Listo Jorge, las observaciones que hiciste tienen que ver con la manera en la que forcé el método para saber si funcionaba, efectivamente funcionó, como te comente arriba.

    Si notas en este código, regVieAnterior toma el valor de Txt_RegistroVie en el Page_Load, para que cuando haga clic en Modificar, regVieAnterior tenga dicho valor antes de modificarse, y cuando de clic en Actualizar, la idea es tomar el valor de Txt_RegistroVie después de modificado (en caso de que se haya escrito otro valor).

    Esta seria la manera definitiva (que creo yo) para que el método funcione, pero como ya te he mencionado, no lo hace de esta manera, sino que toma el mismo valor antes y después.


    Brayan Guerrero

    viernes, 10 de noviembre de 2017 18:11
  • Ya veo...

    Has probado lo que te comenté de cambiar el var matched por

    var matched = String.Equals(sourceDirectory,finalDirectory,StringComparison.OrdinalIgnoreCase);
            if(matched){

    Con eso vas a cazar si el directorio es igual seguro, para evitar la excepción 

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    viernes, 10 de noviembre de 2017 18:51
  • Si Jorge, mira:

    string newRegVie = Txt_RegistroVie.Text;
            string root = "~/Pdfs_Subidos/";
            string sourceDirectory = Server.MapPath(root+ regVieAnterior);
            string finalDirectory = Server.MapPath(root + newRegVie);
            string finalRegVie;
            
            var matched = String.Equals(regVieAnterior,newRegVie,StringComparison.OrdinalIgnoreCase);
            if(matched){

    La comparación que el realiza acá es unicamente para verificar si el registro VIE cambia o no. Como viste arriba cuando lo forcé, puse dos regVie ''estáticos'', de manera que en ese matched, para el if si son iguales.

    Entonces fíjate que te comente antes también que una de las excepciones que me genero era que el directorio era el mismo.


    Brayan Guerrero

    viernes, 10 de noviembre de 2017 21:50
  • Me refiero, a que en vez de comparar las variables regVieAnterior y newRegVie, comparas finalDyrectory y sourceDiratory, con eso vas a saber seguro si son iguales las rutas.

    ademas, el "forzado" que hacias, no los igualaba:

    string newRegVie = "4949";
    this.regVieAnterior = "4989";

    eso son 2 strings diferentes

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    viernes, 10 de noviembre de 2017 22:00
  • Exacto, son dos string diferentes, lo force de esa manera porque como lo tenia (y como lo mostré arriba), de esa manera el esta asumiendo que ambos regVie son iguales aun después de obtener el valor modificado.

    Brayan Guerrero

    sábado, 11 de noviembre de 2017 18:56
  • Buenas,

    Has cambiado el string.Equals por el que te comentaba?

    Que valor tienen esos dos string?

    var matched = String.Equals(sourceDirectory,finalDirectory,StringComparison.OrdinalIgnoreCase);
            if(matched){

    Que valor tienen sourceDirectory y finalDirectory? 

    Espero tu respuesta

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    sábado, 11 de noviembre de 2017 21:27
  • sourceDirectory = 'C:\inetpub\wwwrot\ProyectosGeomatica\Pdfs_subidos\4343'
    
    finalDirectory = 'C:\inetpub\wwwrot\ProyectosGeomatica\Pdfs_subidos\4949'
    
    //finalDirectory deberia tener el regVie que guardo cuando doy clic en actualizar


    Brayan Guerrero

    domingo, 12 de noviembre de 2017 0:49
  • Buenas,

    Pero con esos dos directorios que has puesto no puede darte una excepción de que ya existe... 

    Podrías poner el texto de la excepción completo?

    Atte


    No olvides votar mi comentario si te ha ayudado y marcarlo como respuesta si ha sido la solución, con eso ayudas a mejorar mi reputación en la comunidad y a identificar la respuesta a la gente que tenga el mismo problema.

    Para obtener una respuesta lo más rápida y concisa posible, te recomiendo:

    domingo, 12 de noviembre de 2017 9:46
  • Exacto Jorge, no puede no, NO deberia :D

    Pero encontre algo que parece estar relacionado:

    Get current TextBox Text value in a button onClick event - asp.net

    Tiene que ver con el IsPostBack, que la verdad no entiendo mucho por no decir nada, de eso.


    Brayan Guerrero

    martes, 14 de noviembre de 2017 19:57