2010-07-21 58 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(); 
     } 
     } 
    } 
}); 

需要運行具有完全控制權限:) 的區號,但我們不應該用這種方式寫所有的鱈魚。