utilizar try propiedades personalizar personalizadas para new manejo manejar las excepciones errores ejemplos crear como catch capturar c# asp.net impersonation

try - propiedades de las excepciones en c#



¿Puedo desactivar la suplantación solo en un par de instancias? (4)

Acabo de dar a las carpetas permisos de escritura para "Usuarios autenticados"

Tengo una aplicación que tiene suplantación utilizada en todas partes. Pero cuando un usuario inicia sesión como administrador, algunas operaciones requieren que escriban en el servidor. Ahora, si estos usuarios no tienen derechos en el servidor real (algunos no) no les permitirá escribir.

Lo que quiero hacer es desactivar la suplantación por solo un par de comandos.

¿Hay alguna manera de hacer algo como esto?

using(HostingEnvironment.Impersonate.Off()) //I know this isn''t a command, but you get the idea?

Gracias.


No estoy seguro de si este es el enfoque preferido, pero cuando quise hacer esto, descubrí una instancia de WindowsIdentity y llamé al método Impersonate . Esto permite que el código subsiguiente suplante a un usuario de Windows diferente. Devuelve un WindowsImpersonationContext que tiene un método Deshacer que revierte el contexto de suplantación nuevamente.


Puede desactivar la autenticación para la página y luego suplantar manualmente al usuario autenticado durante el resto de su código.

http://support.microsoft.com/kb/306158

Esto tiene una referencia a esa última parte, pero básicamente te haces pasar por User.Identity

Esto significará que deberá suplantar al comienzo de cualquier llamada a la página, apagarlo cuando lo necesite y luego volverlo a encender cuando haya terminado, pero debería ser una solución viable.


Asegúrese de que el grupo de aplicaciones tenga los derechos adecuados que necesita.

Luego, cuando desee volver a la identidad del grupo de aplicaciones ... ejecute lo siguiente:

private WindowsImpersonationContext context = null; public void RevertToAppPool() { try { if (!WindowsIdentity.GetCurrent().IsSystem) { context = WindowsIdentity.Impersonate(System.IntPtr.Zero); } } catch { } } public void UndoImpersonation() { try { if (context != null) { context.Undo(); } } catch { } }