2009-04-07 31 views
7

Sto tentando di accedere a un elenco di condivisioni a livello di codice in una web part, come questa.Impossibile rilevare l'errore Accesso negato a SharePoint

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

Il metodo RenderExceptionMessage() dovrebbe mostrare un messaggio di errore user-friendly all'interno della web part.

Ma il problema è che non sono in grado di intercettare l'Eccezione. Invece la pagina webpart reindirizza a una pagina di accesso negata che mostra un messaggio di errore "Attualmente connesso come: Dominio \ utente"

Inoltre, viene letto il messaggio dell'eccezione rilevata "Impossibile valutare l'espressione perché il codice è ottimizzato o una cornice nativa è in cima allo stack delle chiamate. "

Qualche idea sul perché questo si comporta in questo modo?

risposta

9

Per impostazione predefinita, SharePoint ha una gestione personalizzata per le eccezioni di accesso negato (incluso il reindirizzamento alla pagina personalizzata) all'interno delle richieste di pagina/webservice, ignorando la gestione di eccezioni nel codice.

Per disabilitare questa gestione personalizzata, impostare SPSecurity.CatchAccessDeniedException su falso.

1

Forse un altro modo per gestire questo è aggiungere alcune programmazioni difensive come un controllo per assicurarsi che l'utente abbia accesso a SPWeb e/o SPList. In cima alla mia testa penso che SPWeb.EnsureUser possa aiutare. SPList.CheckPermissions o SPList.DoesUserHavePermissions possono essere d'aiuto.