2009-04-07 17 views
7

Próbuję programowo uzyskać dostęp do listy programu sharepoint w witrynie sieci Web, na przykład.Nie można złapać błędu odmowy dostępu programu SharePoint

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

Metoda RenderExceptionMessage() powinna wyświetlać przyjazny komunikat o błędzie wewnątrz webpart.

Ale problem polega na tym, że nie jestem w stanie uwięzić wyjątku. Zamiast tego strona internetowa przekierowuje na stronę z odmową dostępu, która pokazuje komunikat o błędzie "Jesteś obecnie zalogowany jako: Domena \ użytkownik"

Ponadto, komunikat o wychwyconym wyjątku brzmi "Nie można ocenić wyrażenia, ponieważ kod jest zoptymalizowana lub natywna ramka znajduje się na wierzchu stosu wywołań. "

Każdy pomysł, dlaczego tak się zachowuje?

Odpowiedz

9

Domyślnie SharePoint ma niestandardową obsługę wyjątków odmowy dostępu (w tym przekierowanie do niestandardowej strony) w żądaniach strony/usługi internetowej, pomijając obsługę wyjątków w kodzie.

Aby wyłączyć tę niestandardową obsługę, ustaw SPSecurity.CatchAccessDeniedException na wartość false.

1

Może innym sposobem radzenia sobie z tym jest dodanie pewnego defensywnego programowania, takiego jak czek, aby upewnić się, że użytkownik ma dostęp do SPWeb i/lub SPList. Poza tym uważam, że SPWeb.EnsureUser może pomóc. Pomocne mogą być również SPList.CheckPermissions lub SPList.DoesUserHavePermissions.

Powiązane problemy