2008-11-09 10 views
14

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

13

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.

8

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.

+1

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

14

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)); 
-3
strint t=System.Web.Security.Membership.GetUser().UserName.ToString(); 
+0

Para beneficio de futuros lectores, ¿puede agregar texto para explicar por qué esta respuesta es preferible a las anteriores? – Flexo

+0

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

Cuestiones relacionadas