我正试图在webpart中以编程方式访问sharepoint列表,就像这样。
try
{
masterList = web.Lists[listId];
}
catch(Exception e)
{
RenderExceptionMessage(e.Message);
}
RenderExceptionMessage()方法应该在webpart中显示用户友好的错误消息。
但问题是我无法捕获异常。而是将webpart页面重定向到访问被拒绝页面,该页面显示错误消息“您当前已登录为:域\用户”
此外,被捕获的异常消息显示“无法评估表达式,因为代码已优化或本机帧位于调用堆栈之上。”
知道为什么会这样吗?
答案 0 :(得分:9)
默认情况下,SharePoint在页面/ Web服务请求中对访问被拒绝的异常(包括重定向到自定义页面)进行自定义处理,绕过代码中的excepton处理。
要禁用此自定义处理,请将SPSecurity.CatchAccessDeniedException设置为false。
答案 1 :(得分:1)
可能另一种处理方法是添加一些防御性编程,例如检查以确保用户可以访问SPWeb和/或SPList。我认为SPWeb.EnsureUser可以提供帮助。 SPList.CheckPermissions或SPList.DoesUserHavePermissions也可以提供帮助。