Recibo un mensaje de error "Acceso a la ruta denegada" cuando se ejecuta en modo de depuración. He intentado otorgar permisos a {MACHINENAME} \ ASPNET y al SERVICIO DE RED, pero esto no ha hecho ninguna diferencia. También lo he intentado < impersonate = true /> utilizando una cuenta de administrador, esto también no hizo diferencia. Entonces, ¿cómo puedo establecer exactamente qué cuenta se está usando?¿Cómo saber en qué cuenta se está ejecutando mi código ASP.NET?
Respuesta
Para averiguar en qué cuenta NT se ejecuta su aplicación en un momento dado, haga algo así como (en VB.NET):
Dim User = System.Security.Principal.WindowsIdentity.GetCurrent.User
Dim UserName = User.Translate(GetType(System.Security.Principal.NTAccount)).Value
al utilizar ASP.NET, esta cuenta coincidirá con la identidad del grupo de aplicaciones, que configura el Administrador de IIS. Tenga en cuenta que el usuario anónimo de IIS no está muy involucrado con las solicitudes de ASP.NET.
Usted podría utilizar este código:
C#
Response.Write("Windows Account which runs ASP.NET is: "
+ Environment.Username);
VB.NET
Response.Write("Windows Account which runs ASP.NET is: " _
& Environment.Username)
Si ejecuta su aplicación en Visual Studio en su PC (localhost) obtendrás tu nombre de usuario. Si implementa una aplicación web ASP.NET en IIS, probablemente obtendrá la cuenta SERVICIO DE RED, porque ese es el usuario predeterminado que ejecuta IIS 6.0 (ASPNET en IIS 5.0 de Windows Server 2000).
Environment.UserName
devuelve el usuario con sesión iniciada actualmente. Page.User
devuelve el nombre que ASP.NET verifica a través de Autenticación y este usuario en la mayoría de los casos es independiente del inicio de sesión de Windows que ejecuta el hilo actual. Para solicitudes anónimas, la página. El usuario está en blanco, mientras que Environment. User será NETWORK SERVICE.
Como mdb señala correctamente en un comentario a esta respuesta, Environment.Username simplemente devolverá la variable de entorno USERNAME, que se establece en la creación del proceso y no se actualiza en caso de suplantación y tal.
C# Código de la respuesta vb.net
var user = System.Security.Principal.WindowsIdentity.GetCurrent().User;
var userName = user.Translate(typeof (System.Security.Principal.NTAccount));
strint t=System.Web.Security.Membership.GetUser().UserName.ToString();
Para beneficio de futuros lectores, ¿puede agregar texto para explicar por qué esta respuesta es preferible a las anteriores? – Flexo
Esto no funciona. Esto devuelve el nombre de usuario del usuario conectado, no el nombre de usuario del usuario que ejecuta la aplicación web, que es lo que solicitó el OP. – NickG
- 1. ¿Cómo puedo saber bajo qué versión de IIS se está ejecutando mi aplicación Asp.Net?
- 2. ¿Cómo puede saber mi programa si Delphi se está ejecutando?
- 3. ¿Cómo puedo saber en qué dispositivos/versiones de sistema operativo se está ejecutando mi aplicación iOS?
- 4. ¿Cómo puedo saber en qué directorio se está ejecutando mi aplicación de consola con C#?
- 5. cómo ver qué código javascript se está ejecutando actualmente?
- 6. Cómo saber si el servidor de emacs se está ejecutando
- 7. ¿Qué usuario está ejecutando mi aplicación Rails?
- 8. ¿Qué iniciador se está ejecutando?
- 9. ¿Cómo puedo saber si mi aplicación se está ejecutando en una sesión de RDP
- 10. ¿Cómo puedo saber si mi script de Perl se está ejecutando en Windows?
- 11. ¿Cómo puedo saber si mi kernel OpenCL se está ejecutando en una GPU?
- 12. ¿Cómo le digo que mi código se está ejecutando en Mono?
- 13. ¿Cómo saber si la actualización MATERIALIZED VIEW se está ejecutando?
- 14. ¿Cómo puedo saber si un proceso se está ejecutando?
- 15. ¿Cómo saber si se está ejecutando un temporizador?
- 16. ¿Cómo saber en qué Mac OS se está ejecutando la aplicación?
- 17. ¿Cómo puedo saber si mi proceso se está ejecutando como administrador?
- 18. ¿Cómo verifica qué hilo está ejecutando el código en Java?
- 19. ¿Cómo determinar si el código .NET se está ejecutando en un proceso ASP.NET?
- 20. ¿Cómo puedo saber si el código de Rails se está ejecutando mediante rake o script/generate?
- 21. ¿Cómo puedo detectar si mi código se está ejecutando en la consola en Rails 3?
- 22. ¿Cómo sé que mi código se está ejecutando en modo "depuración" en IDE?
- 23. Determinar desde el código de qué usuario mi proceso se está ejecutando como
- 24. ¿Qué versión de Java se está ejecutando en Eclipse?
- 25. ¿Cómo saber qué botón HTML se presionó en mi servlet?
- 26. En ColdFusion, ¿hay alguna manera de determinar en qué servidor se está ejecutando el código?
- 27. ¿Puedo saber, en node.js, si mi script se está ejecutando directamente o está siendo cargado por otro script?
- 28. ¿Cómo puede saber un código .NET si se está ejecutando dentro de una aplicación de servidor web?
- 29. ¿Cómo puede saber mi código si se está ejecutando en el servidor de Google o en mi servidor de desarrollo local?
- 30. ¿Cómo puedo determinar por qué mi aplicación ASP.NET está reciclando?
Tenga en cuenta, sin embargo, que Environment.Username le devuelva la variable de entorno USERNAME, que se fija en la creación de procesos y no se actualiza en caso de suplantación y tal. – mdb