我們正在使用sharepoint 2007以編程方式創建SPAlert時訪問被拒絕錯誤
我們創建了以編程方式創建警報的自定義頁面。
我們面臨的問題是,如果登錄的用戶是網站集管理員,那麼只有電子郵件被觸發。
網站集管理員以外的用戶擁有完全控制權或訪問權限的網站,他們將獲得訪問被拒絕錯誤。
我們嘗試使用SPSecurity.RunWithElevatedPrivileges,但在這種情況下,Access Denied錯誤也越來越多。
對於下面的代碼,我們沒有得到拒絕訪問錯誤,但在這種情況下,電子郵件沒有得到觸發,
SPSecurity.RunWithElevatedPrivileges(delegate()
{
Guid siteId = SPContext.Current.Site.ID;
Guid webId = SPContext.Current.Web.ID;
using (SPSite oSite = new SPSite(siteId))
{
using (SPWeb oWeb = oSite.OpenWeb(webId))
{
oWeb.AllowUnsafeUpdates = true;
SPUser oUser = oWeb.CurrentUser;
SPUser user = oWeb.EnsureUser(oUser.ToString());
SPList oList = oWeb.Lists[strLibraryName];
SPAlert oAlert = user.Alerts.Add();
oAlert.Filter ="<Eq><FieldRef Name="+strCol+"><Value type='Text'>" + strColValue + "</Value></Eq>";
oAlert.Title = "test alert";
oAlert.AlertType = SPAlertType.List;
oAlert.EventType = SPEventType.All;
oAlert.List = oList;
oAlert.AlertFrequency = SPAlertFrequency.Immediate;
oAlert.AlwaysNotify = true;
oAlert.Update(true);
}
}
});
請讓我知道什麼是該解決方案或者我們如何可以添加/刪除用戶網站集合管理員在運行時以編程方式運行
您可能會看到是否需要oWeb.AllowUnsafeUpdates。這取決於您在//代碼中創建警報的情況。 – buck 2012-08-08 16:25:57
嗨,降壓,我更新了創建警報代碼的問題 感謝您花時間瞭解問題 – Rushikesh 2012-08-09 08:11:12
其中一個問題是您的oUser變量。由於您在設置時處於提升的權限塊內部,因此oUser是您的應用程序池帳戶,而不是當前登錄的用戶。也許嘗試移動聲明並將其分配到使用語句之上。這可能是唯一的問題 - 警報正在成功創建,但它是針對錯誤的帳戶,因此該帳戶沒有收到電子郵件。如果所有這些都在事件接收器中,則可以使用以下代碼行來獲取實際用戶:SPUser user = oWeb.Users.GetByID(properties.CurrentUserId); – buck 2012-08-09 22:10:27