Alert.update () отказывает в доступе в sharepoint? - PullRequest
0 голосов
/ 14 мая 2011

Я пытаюсь добавить предупреждение для входа пользователя в систему с помощью программирования.Это дает «Доступ запрещен» .Я использую этот код в 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();
    }

1 Ответ

0 голосов
/ 16 мая 2011

Я не знаю, является ли это решением.Не могли бы вы обновить eweb, прежде чем двигаться дальше (Создать / Удалить предупреждение)

eweb.AssociatedMemberGroup.AddUser(eweb.EnsureUser(user.LoginName));
eweb.AssociatedMemberGroup.Update();
eweb.update();
...