SPSecurity.RunWithElevatedPrivileges
にコードを実行してもSPFolderを開こうとするとアクセス拒否エラーが表示されます。私はこのトピックに関するいくつかのポストを見つけ、私が見つけた解決策は:SPFolderのSharepointアクセスが拒否されました
RunWithElevatedPrivileges
- 設定
SPSecurity.CatchAccessDeniedException
に何も作品内
SPContext.Current
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