用代码操作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;
这样代码就不会有问题了