alert.update()アクセス権を与えるAccessはSharePointで拒否されましたか?
-
14-11-2019 - |
質問
プログラミングを使用してユーザーを記録するためのアラートを追加しようとしています。「アクセスが拒否された」を与えています。
SPSecurity.RunWithElevatedPrivileges(delegate()
の下にこのコードを実行しています。私はすべての場所でアプリケーションプールのID権利をチェックしました。彼はファーム管理者グループ、サイトコレクショングループ、データベースオーナーグループにいます。それでも同じエラーが発生しました。なぜこれが起こっていますか?
.protected void ChkBx41_CheckedChanged(object sender, EventArgs e)
{
SPUser user = SPContext.Current.Web.CurrentUser;
SPSecurity.RunWithElevatedPrivileges(delegate()
{
using (SPWeb eweb = new SPSite(url.Text).OpenWeb())
{
SPUser juser = null;
eweb.AllowUnsafeUpdates = true;
try
{
juser = eweb.AssociatedMemberGroup.Users[user.LoginName];
}
catch (Exception)
{
}
if (ChkBx41.Checked)
{
if (juser == null)
{
eweb.AssociatedMemberGroup.AddUser(eweb.EnsureUser(user.LoginName));
createalert(SPAlertFrequency.Daily, eweb, eweb.EnsureUser(user.LoginName),true);
}
RBList4.SelectedValue = "Daily";
RBList4.Enabled = true;
}
else
{
if (juser != null)
{
eweb.AssociatedMemberGroup.RemoveUser(juser);
removealert(eweb, juser);
RBList4.SelectedValue = null;
RBList4.Enabled = false;
}
}
}
});
}
public void createalert(SPAlertFrequency frq, SPWeb pweb, SPUser puser,bool mail)
{
try
{
pweb.AllowUnsafeUpdates = true;
foreach (SPList lst in pweb.Lists)
{
if (lst.BaseTemplate == SPListTemplateType.Announcements || lst.BaseTemplate == SPListTemplateType.DiscussionBoard || lst.BaseTemplate == SPListTemplateType.Events )
{
SPAlert alt = puser.Alerts.Add();
alt.AlertType = SPAlertType.List;
alt.List = lst;
alt.EventType = SPEventType.All;
alt.AlertFrequency = frq;
alt.Title = "SPE " + lst.Title;
if (frq != SPAlertFrequency.Immediate)
{
alt.AlertTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 15, 0, 0);
}
if (mail)
{
alt.Update(); // Access denied exception
}
else
{
alt.Update(false);
}
}
}
}
pweb.AllowUnsafeUpdates = false;
}
catch (Exception ee) {
throw ee.Message;
}
pweb.Dispose();
}
解決
これが解決策であるかどうかわかりません。先を移動する前にEWebを更新できます(アラート作成/削除)
eweb.AssociatedMemberGroup.AddUser(eweb.EnsureUser(user.LoginName));
eweb.AssociatedMemberGroup.Update();
eweb.update();
.