使用SPSecurity.RunWithElevatedPrivileges会收到错误

时间:2011-03-02 09:02:55

标签: sharepoint

我得到的错误是 此页面的安全验证无效。在Web浏览器中单击“上一步”,刷新页面并再次尝试操作。 我正在使用moss 2007

protected void btnSubmit_Click(Object sender, EventArgs e)
    {
        try
        {
            SPSecurity.RunWithElevatedPrivileges(delegate()
{
    SPUtility.ValidateFormDigest();
    using (SPSite mySite = new SPSite(_sLibUrl))
    {

        TextBox txtFirstName = (TextBox)usercontrol.FindControl("txtFirstName");
        TextBox txtLastName = (TextBox)usercontrol.FindControl("txtLastName");
        TextBox txtPhone = (TextBox)usercontrol.FindControl("txtPhone");
        TextBox txtEmail = (TextBox)usercontrol.FindControl("txtEmail");
        TextBox txtSubject = (TextBox)usercontrol.FindControl("txtSubject");
        TextBox txtContant = (TextBox)usercontrol.FindControl("txtContant");

        mySite.AllowUnsafeUpdates = true;
        SPListItemCollection listItems = mySite.AllWebs[WebName].Lists[_sLibName].Items;
        SPListItem item = listItems.Add();
        item["FirstName"] = txtFirstName.Text;
        item["LastName"] = txtLastName.Text;
        item["Phone"] = txtPhone.Text;
        item["Email"] = txtEmail.Text;
        item["Subject"] = txtSubject.Text;
        item["Contant"] = txtContant.Text;

        item.Update();
        mySite.AllowUnsafeUpdates = false;
        mySite.AllWebs[WebName].Lists[_sLibName].Update();
        txtFirstName.Text = string.Empty;
        txtLastName.Text = string.Empty;
        txtPhone.Text = string.Empty;
        txtEmail.Text = string.Empty;
        txtSubject.Text = string.Empty;
        txtContant.Text = string.Empty;

    }
    Label lblMessage = (Label)usercontrol.FindControl("lblMessage");
    // lblMessage.Text = "טופס נשלח בהצלחה";
});
        }

        catch (Exception ex)
        {
            Label lbl = (Label)usercontrol.FindControl("lblMessage");
            lbl.Text = ex.Message;
        }
    }

3 个答案:

答案 0 :(得分:2)

尝试在mySite.AllowUnsafeUpdates = false;

之后加mySite.AllWebs[WebName].Lists[_sLibName].Update();

答案 1 :(得分:1)

我发现解决方案我需要做的是删除

mySite.AllowUnsafeUpdates = true; 和 mySite.AllowUnsafeUpdates = false; 它的工作原理

答案 2 :(得分:1)

我总是使用这个解决方案

using (var site = new SPSite(SPContext.Current.Site.ID))
using (var web = site.OpenWeb())
{
    web.AllowUnsafeUpdates = true;
    //add, update and etc. programatically crud operations with lists 
    web.AllowUnsafeUpdates = false;
}