无法捕获SharePoint Access拒绝错误

时间:2009-04-07 08:43:58

标签: sharepoint sharepoint-2007 moss

我正试图在webpart中以编程方式访问sharepoint列表,就像这样。

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

RenderExceptionMessage()方法应该在webpart中显示用户友好的错误消息。

但问题是我无法捕获异常。而是将webpart页面重定向到访问被拒绝页面,该页面显示错误消息“您当前已登录为:域\用户”

此外,被捕获的异常消息显示“无法评估表达式,因为代码已优化或本机帧位于调用堆栈之上。”

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:9)

默认情况下,SharePoint在页面/ Web服务请求中对访问被拒绝的异常(包括重定向到自定义页面)进行自定义处理,绕过代码中的excepton处理。

要禁用此自定义处理,请将SPSecurity.CatchAccessDeniedException设置为false。

答案 1 :(得分:1)

可能另一种处理方法是添加一些防御性编程,例如检查以确保用户可以访问SPWeb和/或SPList。我认为SPWeb.EnsureUser可以提供帮助。 SPList.CheckPermissions或SPList.DoesUserHavePermissions也可以提供帮助。