none
Porque con asp.net no me recupera el Usuario de windows? RRS feed

  • Pregunta

  • Saludos tengo una aplicacion en c# que solamente realizará una busqueda de archivos en la pc servidor y entregar una respuesta, pero me está marcando un error: "Error 3 No se puede convertir el grupo de métodos 'GetCurrent' en tipo no delegado 'System.Security.Principal.WindowsIdentity".

    Intento recuperar nombre de usuario windows

    WindowsIdentity MyIdentity= WindowsIdentity.GetCurrent;
                WindowsPrincipal MyPrincipal = new WindowsPrincipal(MyIdentity);
    
    string user = User.Identity.Name ;//HttpContext.Current.Request.UserHostName);
                string dirdowload =Convert.ToString(AppDomain.CurrentDomain.ApplicationIdentity);
                string cuenta = HttpContext.Current.User.Identity.Name;
                string str = "Info " + cuenta +"user:"+user+", dir "+dirdowload ;
    ninguno de los metodos me retorna el Nombre, solo devuelven vacío

    La programacion en Microsoft cada ves se torna inalcanzable

    jueves, 4 de febrero de 2016 16:59

Respuestas

  •  No se puede convertir el grupo de métodos 'GetCurrent' en tipo

    Tal como te dice Leandro, ese error se debe a la falta de paréntesis. Pero incluso aunque pongas los paréntesis, probablemente no funcionará como esperas. En una aplicación ASP.NET, el usuario que obtendrás no será el de la persona que está ejecutando la aplicación desde el PC cliente, sino que obtendrás el nombre de la cuenta del Pool de IIS que está ejecutando la parte servidora de la aplicación.

    Para obtener la cuenta de Windows del usuario final, tendrás que configurar la aplicación web para que use autenticación integrada (en IIS y en ASP.NET), y recuperarlo con User.Identity.Name. O, si lo quieres recuperar con WindowsIdentity.GetCurrent(), entonces necesitas configurar la aplicación para que impersone al usuario, poniendo <identity impersonate="true" /> en el web.config.

    Gracias por su respuesta sr. Poblacion, pero fijese que en mi caso me había pasado por alto el modo de autenticacion en mi web.config, estaba usando <authentication mode="Forms">, en ves de windows. Ahora con solo cambiar esta linea ya obtengo el nombrepc\nombreUsuario

    gracias


    La programacion en Microsoft cada ves se torna inalcanzable

    viernes, 5 de febrero de 2016 3:04

Todas las respuestas

  • hola

    el GetCurrent es un metodo, por lo que te esta faltando los ()

    WindowsIdentity MyIdentity= WindowsIdentity.GetCurrent();


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 4 de febrero de 2016 17:33
  •  No se puede convertir el grupo de métodos 'GetCurrent' en tipo

    Tal como te dice Leandro, ese error se debe a la falta de paréntesis. Pero incluso aunque pongas los paréntesis, probablemente no funcionará como esperas. En una aplicación ASP.NET, el usuario que obtendrás no será el de la persona que está ejecutando la aplicación desde el PC cliente, sino que obtendrás el nombre de la cuenta del Pool de IIS que está ejecutando la parte servidora de la aplicación.

    Para obtener la cuenta de Windows del usuario final, tendrás que configurar la aplicación web para que use autenticación integrada (en IIS y en ASP.NET), y recuperarlo con User.Identity.Name. O, si lo quieres recuperar con WindowsIdentity.GetCurrent(), entonces necesitas configurar la aplicación para que impersone al usuario, poniendo <identity impersonate="true" /> en el web.config.

    jueves, 4 de febrero de 2016 19:43
  •  No se puede convertir el grupo de métodos 'GetCurrent' en tipo

    Tal como te dice Leandro, ese error se debe a la falta de paréntesis. Pero incluso aunque pongas los paréntesis, probablemente no funcionará como esperas. En una aplicación ASP.NET, el usuario que obtendrás no será el de la persona que está ejecutando la aplicación desde el PC cliente, sino que obtendrás el nombre de la cuenta del Pool de IIS que está ejecutando la parte servidora de la aplicación.

    Para obtener la cuenta de Windows del usuario final, tendrás que configurar la aplicación web para que use autenticación integrada (en IIS y en ASP.NET), y recuperarlo con User.Identity.Name. O, si lo quieres recuperar con WindowsIdentity.GetCurrent(), entonces necesitas configurar la aplicación para que impersone al usuario, poniendo <identity impersonate="true" /> en el web.config.

    Gracias por su respuesta sr. Poblacion, pero fijese que en mi caso me había pasado por alto el modo de autenticacion en mi web.config, estaba usando <authentication mode="Forms">, en ves de windows. Ahora con solo cambiar esta linea ya obtengo el nombrepc\nombreUsuario

    gracias


    La programacion en Microsoft cada ves se torna inalcanzable

    viernes, 5 de febrero de 2016 3:04