2010-05-18 16 views
6

¿Cómo se determina la identidad del proceso para ASP.NET? Obtengo una Excepción de Acceso UnAthorized cuando un usuario hace clic en un LinkButton diseñado para usar System.IO para eliminar un archivo ubicado en una subcarpeta de la carpeta raíz para un Proyecto de Aplicación Web en Visual Studio 2008.ASP.NET - ¿Cómo se encuentra la identidad del proceso?

Respuesta

9

Para el usuario que ejecuta el proceso: Environment.UserName

para la persona que solicita la página: Page.User.Identity

Editar: servicio de red es la cuenta predeterminada utilizada para servir contenido a través de la red (por ejemplo, IIS). Ver todos built-in accounts. Tendrá que dar acceso a la carpeta al servicio de red (también le dará acceso a todos los otros sitios web que usan este acceso a la cuenta) o configurar otra cuenta.

¿Está utilizando IIS 6 o 7?

+0

Nelson, su comentario "... o darle a la red de acceso de servicio" era lo que realmente estaba buscando. Avitus me ofreció una forma de hacerlo, pero mi tienda no utiliza el supuesto de verdad. Ya estaba usando la autenticación de Windows, y dando derechos de modificación del servicio de red funcionó. Volveré si esto no funciona en el servidor de producción. Gracias a todos por ayudarme. Como tumbleweed, me gustaría darles puntos MAX a todos ustedes. Déjame saber qué puedo hacer para MAX cada uno apropiadamente. – dannyrosalex

+1

@Berlioz: solo tenga en cuenta que en un entorno de producción es posible que no desee hacerlo de esta manera. Si le da acceso a la carpeta al Servicio de Red, todos los otros sitios web que se ejecutan como Servicio de Red también tendrán acceso. Normalmente, solo utiliza el servicio de red si los permisos/configuraciones predeterminados son correctos, pero crea un usuario (puede ser un usuario de computadora local) para cada sitio web que va a personalizar. –

4

Supongo que desea obtener la identidad del proceso en la ejecución de la página ASPX. En ese caso:

System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
+0

Sí, eso es correcto, y al insertar su línea de código en una etiqueta, obtuve lo siguiente para mostrar: "NOMBREDOMINIO \ NOMBRE DE USUARIO". Obviamente uso la autenticación de Windows en una red de Windows. Mi siguiente pregunta, por favor, infórmeme, ¿qué es la cuenta de "SERVICIO DE RED"? – dannyrosalex

+0

Hay al menos tres formas de obtener el usuario: http://www.dotnetmonster.com/Uwe/Forum.aspx/vs-net-general/1854/Getting-user-name-Environment-UserName-vs-SystemInformation –

+1

@Berlioz: http://msdn.microsoft.com/en-us/library/ms684272%28VS.85%29.aspx –

2

Lo que vamos a tener que hacer es poner una etiqueta

<identity impersonate="true" username="x" password="x" />

en su web.config que tiene derechos para eliminar el archivo.

+0

... o dar acceso a "Servicio de red", cambiar el usuario/contraseña en el grupo de aplicaciones, usar la autenticación de Windows ... –

+0

Si mi solución está en SourceSafe y debo depurar (F5) en Cassini, ¿se eliminarán los archivos de la subcarpeta o ¿evitará SS que se eliminen? – dannyrosalex

+0

deb = depurar? Si está depurando utilizando el servidor web de Visual Studio (Cassini), entonces no puede cambiar la identidad del grupo de aplicaciones (IIS). Lo que dijo Avitus debería funcionar; de lo contrario, puede asignar permisos de la cuenta del Servicio de Red a esa carpeta o usar la autenticación integrada (Windows) (más útil en escenarios de intranet) –

Cuestiones relacionadas