用代碼操作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;
這樣代碼就不會有問題了