Я пытаюсь добавить предупреждение для входа пользователя в систему с помощью программирования.Это дает «Доступ запрещен» .Я использую этот код в SPSecurity.RunWithElevatedPrivileges(delegate()
.Я проверил права идентификации пула приложений во всех местах.Он входит в группу администраторов фермы, группу семейств сайтов и группу владельцев баз данных.По-прежнему получаю ту же ошибку.Почему это происходит?
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();
}