2009-04-07 31 views
7

Tôi đang cố gắng truy cập danh sách sharepoint theo lập trình trong một webpart, như thế này.Không thể bắt lỗi truy nhập SharePoint bị từ chối

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

Phương thức RenderExceptionMessage() được cho là hiển thị thông báo lỗi thân thiện với người dùng bên trong webpart.

Nhưng vấn đề là tôi không thể bẫy ngoại lệ. Thay vào đó, trang webpart chuyển hướng đến trang truy cập bị từ chối hiển thị thông báo lỗi "Bạn hiện đăng nhập bằng: Tên miền \ người dùng"

Ngoài ra, thông báo ngoại lệ bị bắt "Không thể đánh giá biểu thức vì mã được tối ưu hóa hoặc một khung gốc nằm ở trên cùng của ngăn xếp cuộc gọi. "

Bất kỳ ý tưởng nào tại sao điều này hoạt động theo cách này?

Trả lời

9

Theo mặc định, SharePoint có xử lý tùy chỉnh để truy cập ngoại lệ bị từ chối (bao gồm chuyển hướng đến trang tùy chỉnh) trong yêu cầu trang/webservice, bỏ qua xử lý excepton trong mã của bạn.

Để tắt xử lý tùy chỉnh này, hãy đặt SPSecurity.CatchAccessDeniedException thành sai.

1

Có thể một cách khác để xử lý việc này là thêm một số chương trình phòng thủ như kiểm tra để đảm bảo người dùng có quyền truy cập vào SPWeb và/hoặc SPList. Trên đỉnh đầu tôi nghĩ rằng SPWeb.EnsureUser có thể giúp bạn. SPList.CheckPermissions hoặc SPList.DoesUserHavePermissions cũng có thể trợ giúp.

Các vấn đề liên quan