将动态字段添加到sharepoint中的SPList时出现问题

时间:2010-07-21 08:42:38

标签: sharepoint-2007 wss wss-3.0

我们在webpart中有以下代码:

using (SPSite site = new SPSite("http://localhost/"))
{
  using (SPWeb web = site.OpenWeb())
  {
    SPList list = web.SiteUserInfoList;
    if (!list.Fields.ContainsField("Office"))
    {
        list.Fields.Add("Office", SPFieldType.Text, false);
        list.Update();
    }
  }
}

在我们向列表中添加项目的第4行中,我们收到此错误:“GET请求当前不允许更新。要允许GET上的更新,请在 SPWeb上设置'AllowUnsafeUpdates'属性

然后我们在将项目添加到列表之前添加了这一行:

web.AllowUnsafeUpdates = true;

现在我们收到此错误: “您目前已登录为: [域名] \用户名”。 以其他用户身份登录。

我们使用的帐户也有管理权限。 知道我们如何能够执行以下代码:

web.AllowUnsafeUpdates = true;
list.Fields.Add("Office", SPFieldType.Text, false);
list.Update();

1 个答案:

答案 0 :(得分:1)

按照以下方式运行:

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    using (SPSite site = new SPSite(web.Site.ID))
    {
      using (SPWeb web = site.OpenWeb())
      {
        SPList list = web.SiteUserInfoList;
        if (!list.Fields.ContainsField("Office"))
        {
            list.Fields.Add("Office", SPFieldType.Text, false);
            list.Update();
        }
      }
    }
});

需要运行具有完全控制权限的代码:) 但我们不应该用这种方式写出所有的鳕鱼。