• Sharepoint身份模拟


    用代码操作Sharepoint时,会出现需要那些不具有相应权限的用户对列表、库等进行操作,一般利用

    SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    using(SPSite site = new SPSite(siteurl))
    { site.AllowUnsafeUpdates
    = true; SPListItem item = site.AllWebs[""].Lists[""].Folders.Add("父文档库url", SPFileSystemObjectType.Folder); item["Name"] = “文件夹名称”; item.Update(); site.AllowUnsafeUpdates = false;
    } });

    但有时会遇到The security validation for this page is invalid”的错误
    遇到这样的错误,可能是因为Sharepoint对请求的资源进行验证,从而导致的error,比如创建列表等

    Microsoft.SharePoint.Administration.SPWebApplication webApp = site.Site.WebApplication;
    webApp.FormDigestSettings.Enabled = false;
    SPFile spFile = site.Files.Add(fileUpload.FileName, contents);
    spFile.Item.Update();
    webApp.FormDigestSettings.Enabled = true;
    

    通过上述代码来解决invalid错误。

     

    接上部分内容

    在实践中发现有时上面的代码不能成功运行,还是会报错。原因是不能再SPSecurity.RunWithElevatedPrivileges中对列表或者项更新,权限提升在实例化web的过程中,所以将代码修改为:

    SPWeb web=null;
    SPSecurity.RunWithElevatedPrivileges(delegate() { using(SPSite site = new SPSite(siteurl)) { web=site.AllWebs[""]; } });
                web.AllowUnsafeUpdates = true;
                SPListItem item = site.AllWebs[""].Lists[""].Folders.Add("父文档库url", SPFileSystemObjectType.Folder);
                item["Name"] = “文件夹名称”;
                item.Update();
                web.AllowUnsafeUpdates = false;
     

    这样代码就不会有问题了

  • 相关阅读:
    JSP页面重定向与页面内容转发
    tomcat访问所有的资源,都是用Servlet来实现的
    War包是什么??
    jsp中include的两种用法
    TED #05# How we can face the future without fear, together
    TED #04#
    学写网页 #03# 固定在某个角落
    TED #03# 10 ways to have a better conversation
    TED #02#
    学写网页 #02# 无题
  • 原文地址:https://www.cnblogs.com/renzh/p/2694857.html
Copyright © 2020-2023  润新知