2010-07-21 42 views
1

添加动态字段添加到SPList我们已经在web部件下面的代码:问题在SharePoint

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(); 
+0

SPWeb的上下文是什么,并且是从(某个)农场机器运行的代码? – 2010-07-21 08:45:30

+0

我已经更新了代码。只有一台服务器 - 这是你的意思是农场机器。 – Rahatur 2010-07-21 09:41:07

回答

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

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