在代码中执行没有权限的操作时,SharePoint平台会抛出“拒绝访问(access denied)”异常,并将用户重定向到_layouts/AccessDenied.aspx页面。即使你尝试使用try...catch...finally来捕获处理这个异常,但是代码会在出错的地方停止继续执行,并且异常并不能被你的代码catch住。

当发生“拒绝访问”异常时,默认情况下SharePoint平台会自己捕获它,并将用户重定向到_layouts/AccessDenied.aspx页面,以便告诉用户没有权限,可以请求管理员给自己分配权限,或使用一个有权限的用户登陆。

如果你想在代码中处理这个异常,需要将Microsoft.SharePoint.SPSecurity.CatchAccessDeniedException属性设置为false,这样SharePoint平台就不会自动处理这个异常。下面是一段实例代码:

// for the assignment site, if the user doesn't have permission to view it
// we'll catch the exception 
bool previousValue = SPSecurity.CatchAccessDeniedException;
SPSecurity.CatchAccessDeniedException = false;
try
{
    using (SPSite spSite = new SPSite(strWebUrl))
    {
        using (SPWeb spWeb = spSite.OpenWeb())
        {
            //do some operations. An access denied exception may be thrown from here.
        }
    }
}
catch (UnauthorizedAccessException)
{
    //do nothing. Catch the exception to not to restrict the user to access the content if user does not have access to SPWeb.
}
catch (FileNotFoundException)
{
    // do nothing . Catch the exception to not to restrict the user to access the content if SPWeb does not exist.
}
finally
{
    SPSecurity.CatchAccessDeniedException = previousValue;
}

使用SPSecurity.CatchAccessDeniedException来防止跳到“拒绝访问”页面是官方推荐的方法,还有另外一个方法是设置Microsoft.SharePoint.SPSite.CatchAccessDeniedException属性,这个属性是SharePoint保留给自己内部使用的,不建议在我们的开发代码中使用。

参考:
How to avoid Access denied page
SPSecurity.CatchAccessDeniedException Property (Microsoft.SharePoint)
SPSite.CatchAccessDeniedException Property (Microsoft.SharePoint)

作者:黎波
博客:http://bobli.cnblogs.com/
日期:2008年10月23日

[SharePoint]如何防止从代码跳到“拒绝访问”页面相关推荐

  1. 解决HbuilderX拒绝访问页面的问题

    什么是Hbuilder? Hbuilder是一款国人研发的前端开发工具,经过不断的升级它不仅可以兼容HTML,还有JSON,PHP等一些格式,有点类似于sublime这款软件. 问题发现 但有时候就会 ...

  2. 《VS2015运行程序时拒绝访问》

    平常玩游戏打开TGP,打完游戏之后再用vs写代码都没怎么出现过问题,今天玩完CF之后,运行代码发现TMD拒绝访问,我靠,网上搜了一下,都说是TGP的原因,估计是加速的时候把vs里面的一些功能给关了,而 ...

  3. 【Android 逆向】IDA 工具使用 ( 重命名函数 | 添加注释 | 添加标签 / 跳转标签 | 代码跳转前进 / 后退 )

    文章目录 一.重命名函数 二.添加注释 三.添加标签 / 跳转标签 四.代码跳转前进 / 后退 一.重命名函数 针对一个 匿名函数 , 在分析函数时 , 可以为匿名函数进行命名 ; 右键点击 函数名 ...

  4. python中返回上一步操作的代码_Pycharm代码跳转后退回操作详解

    用Pycharm写Python代码有一段时间了,最近发现了一个Pycharm的一个小技巧想分享给大家,下面这篇文章主要给大家介绍了关于Pycharm代码跳转该如何回退的相关资料,文中介绍的非常详细,对 ...

  5. SharePoint Set-SPUser 命令拒绝访问

    · 前言 最近碰到一个问题,由于User Profile Service服务有问题,用户信息无法更新.所以,想到Set-SPUser命令可以更新,于是乎找到这个命令,但是更新的时候发现拒绝访问的错误. ...

  6. 自动判断浏览器的中英文版本自动跳转网站中英文页面代码

    许多网站现在都是依靠自动判断浏览器的中英文版本来判断给你打开网站的中文还是英文版,也许好多朋友还不知道这个代码,今天正好给公司改版企业网站用到了,在此公布出来,供大家一起学习. HTML网页根据来访者 ...

  7. html导航栏代码跳转,微信小程序自定义底部导航栏tabBar(含跳转页面wx.navigateTo)...

    一.app.json配置 这里配置 {"pages": ["pages/usersLists/usersLists","pages/addMember ...

  8. SharePoint Desiger编辑模板时提示“服务器错误,拒绝访问”的解决之道

    这篇文件已被微软收藏. http://technet.microsoft.com/zh-cn/ff683721.aspx     各位同志好,很多同志都用过SharePoint designer来编辑 ...

  9. 管理员用户不同身份登录页面代码PHP,wordpress管理员登录和普通用户登录后跳转到不同页面-♚付涛纪实阁♚...

    这篇文章将向您展示WordPress用户登录后如何重定向到指定页面或者文章的技巧. 一.重定向到网站管理面板. 将以下代码添加到您的当前主题的 functions.php 文件中 二.重定向到指定页面 ...

最新文章

  1. python交换函数_python a,b = b,一个实现?它与C ++交换函数有何不同?
  2. GridView:根据单元格的值给单元格着色
  3. 「Apollo」class DescriptorBase(metaclass=DescriptorMetaclass)
  4. 虚拟化宿主服务器网络设置,kvm虚拟化安装配置手册
  5. 程序员奇奇怪怪的网络问题
  6. 6.IDA-重命名、注释
  7. python连接redis002
  8. Paddle实现NLP-文本分类
  9. 关于 LimitedConcurrencyLevelTaskScheduler 的疑惑
  10. 简单实现虚拟机备份上云
  11. 呼叫中心行业,引领时代进步
  12. 「Codeforces 335E」Counting Skyscrapers
  13. 2020考研计算机(408)考试大纲
  14. 在蓝图中设置人物动作 教程
  15. Pandas做数据空缺值填充
  16. ngrok私有服务搭建(docker交叉编译)
  17. 使用飞桨PaddleHub实现将视频动作转化为皮影戏
  18. The 2020 ICPC Asia Shenyang Regional Programming Contest I题 Rise of Shadows(数论)
  19. MES系统的价值到底在哪?
  20. cocos2dx+KinectV2 体感游戏之微信打飞机

热门文章

  1. 第四课-Log的使用
  2. LVS三种请求转发方式和八种调度算法简介
  3. 二叉树最近公共祖先 LCA
  4. 判断 list 集合是否含有重复对象
  5. 如何避免用动态语言的思维写Go代码
  6. vue中标签自定义属性的使用
  7. 你可能不太熟知的布局技巧
  8. vue实现倒计时验证码
  9. Consul服务治理原理简介及使用过程
  10. 拉斯维加斯算法结合八皇后问题