虽然我运行代码SPSecurity.RunWithElevatedPrivileges
,但我尝试打开SPFolder时遇到Access Denied错误。我找到关于此主题的几个职位,而我发现了解决方案:Sharepoint访问被拒绝RunWithElevatedPrivileges for SPFolder
- 不要使用
SPContext.Current
- 实例化人SPObject的
RunWithElevatedPrivileges
- 里面设置为false
SPSecurity.CatchAccessDeniedException
没有什么作品为了我。按照我的代码,错误发生在:
SPFolder DocumentLibrary = web.Folders[Library];
我的代码:
bool originalCatchValue = SPSecurity.CatchAccessDeniedException;
SPSecurity.CatchAccessDeniedException = false;
try
{
string[] ArrayId = Request["arrayId"].ToString().Split('|');
string company = Request["company"].ToString();
string NewSPContext = company == "XXX" ? siteCollectionUrl.Replace("XXX", "") : siteCollectionUrl + "XXX";
SPUserToken userToken = SPContext.Current.Web.CurrentUser.UserToken;
foreach (string id in ArrayId)
{
SPSecurity.RunWithElevatedPrivileges(delegate()
{
SPSite oSite = new SPSite(siteCollectionUrl, userToken);
SPWeb oWeb = oSite.OpenWeb();
SPFile itemFile = FindListByName(oWeb, Library).GetItemById(int.Parse(id)).File;
using (SPSite site = new SPSite(NewSPContext, userToken))
using (SPWeb web = site.OpenWeb())
{
var test = web.CurrentUser;
web.AllowUnsafeUpdates = true;
SPFolder DocumentLibrary = web.Folders[Library];
DocumentLibrary.Files.Add(itemFile.Item.Name, itemFile.OpenBinary(), itemFile.Properties, true);
DocumentLibrary.Update();
}
});
}
Response.Write("OK");
}
finally
{
SPSecurity.CatchAccessDeniedException = originalCatchValue;
}
请不要将标题更改为“已解决”。如果某个答案解决了问题,则将其标记为答案并注册,以表示赞赏并指出(解决类似问题的其他人)解决问题的方法。 – Sufian