2011-05-14 13 views
0

プログラミングを使用してユーザーをログオンするためのアラートを追加しようとしています。 は「アクセス拒否」です。 私はSPSecurity.RunWithElevatedPrivileges(delegate()の下でこのコードを実行しています。私は、すべての場所でアプリケーションプールIDの権限を確認しました。彼はファーム管理者グループ、サイトコレクショングループ、データベース所有者グループに属しています。まだ同じエラーが発生しています。なぜこれが起こっているのですか?Alert.update()は共有ポイントでアクセスを拒否していますか?

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(); 
    } 

答えて

0

これが解決策であるかどうかわかりません。先に進む前にewebを更新してください(警告の作成/削除)

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

私もこれを試しました。まだ同じエラーが発生しています。 – James123

関連する問題