2009-04-07 11 views
7

Estoy tratando de acceder a una lista de sharepoints programáticamente en un sitio web, como este.No se puede detectar el error denegado de SharePoint Access

try 
{ 
     masterList = web.Lists[listId]; 
} 
catch(Exception e) 
{ 
     RenderExceptionMessage(e.Message); 
} 

Se supone que el método RenderExceptionMessage() muestra un mensaje de error fácil de usar dentro de la parte web.

Pero el problema es que no puedo atrapar la excepción. En su lugar, la página web redirecciona a una página de acceso denegado que muestra un mensaje de error "Usted está actualmente conectado como: Dominio \ usuario"

Además, el mensaje de la excepción capturada dice "No se puede evaluar la expresión porque el código es el marco optimizado o nativo se encuentra en la parte superior de la pila de llamadas ".

¿Alguna idea de por qué esto se comporta de esta manera?

Respuesta

9

De forma predeterminada, SharePoint tiene un manejo personalizado para las excepciones de acceso denegado (incluido el redireccionamiento a la página personalizada) dentro de las solicitudes de página/servicio web, evitando el manejo de excepción en el código.

Para deshabilitar este manejo personalizado, establezca SPSecurity.CatchAccessDeniedException en falso.

1

Quizás otra forma de manejar esto sea agregar alguna programación defensiva como una comprobación para asegurarse de que el usuario tenga acceso a SPWeb y/o SPList. Por la parte superior de mi cabeza, creo que SPWeb.EnsureUser puede ayudar. SPList.CheckPermissions o SPList.DoesUserHavePermissions también pueden ser de ayuda.

Cuestiones relacionadas