2013-09-23 59 views
0

我試圖將一個字段綁定到termset,如果termset不存在,我想通過代碼創建它。但是,即使代碼運行時使用提升的特權,我也會得到以下例外。當前用戶沒有足夠的權限執行此操作。在sharepoint中添加termset

當前用戶沒有足夠的權限執行此操作。

public static void BindTaxonomyField(string taxonomyFieldId, string taxonomyNoteFieldId, string termSetName, string termGroup, SPWeb web) 
     { 
      try 
      { 
       if (web != null) 
       { 
        // get the taxonomyfield from the sitecollection 
        var field = web.Fields[new Guid(taxonomyFieldId)] as TaxonomyField; 
        if (field != null) 
        { 
         // attach the note field 
         field.TextField = new Guid(taxonomyNoteFieldId); 

         // set up the field for my termstore 
         var session = new TaxonomySession(web.Site); 

         if (session.TermStores.Count > 0) 
         { 
          // get termstore values 
          TermStore ts = session.TermStores[0]; 
          Group group = GetGroup(termGroup, ts); 
          if (group == null) 
          { 
           ts.CreateGroup(termGroup); 
           //throw new Exception("Group was not found in the termstore"); 
          } 

// ReSharper disable PossibleNullReferenceException 
          TermSet termSet = group.TermSets.Any(s => s.Name == termSetName) ? group.TermSets[termSetName] : group.CreateTermSet(termSetName); 
// ReSharper restore PossibleNullReferenceException 

          //TermSet termSet = group.TermSets[termSetName]; 

          // actually setup the field for using the TermStore 
          field.SspId = ts.Id; 
          field.TermSetId = termSet.Id; 
         } 

         field.Update(); 
        } 
       } 
      } 
      catch (Exception ex) 
      { 

      } 
     } 


private void BindColumnsToTermStore(string url) 
     { 
      try 
      { 
       SPSecurity.RunWithElevatedPrivileges(delegate 
       { 
        using (var site = new SPSite(url)) 
        { 
         using (SPWeb web = site.OpenWeb()) 
         { 
          if (!web.AllowUnsafeUpdates) 
           web.AllowUnsafeUpdates = true; 



          BindTaxonomyField("EF810CD2-F2D2-4BD2-9ABF-C19815F13568", 
                      "67E6E777-0D1E-4840-B858-17400CFABD14", 
                      "Business Audience", "IctDocumentation", 
                      web); 


          web.AllowUnsafeUpdates = false; 
         } 
        } 
       }); 
      } 

回答

4

如果你去到中央管理和瀏覽到您的術語庫(這是在左手NAV)頁面的主容器也有一些用戶名框。您所運行的代碼是否在列表中?如果不把它們粘在那裏。

我認爲路是一樣的東西集中式管理 - >管理服務應用程序 - >管理元數據服務 - 而在頁面上是通話術語庫管理員

還有一個多地方,你必須檢查,但首先檢查它們,然後再次運行。

下一個地方,檢查是爲了突出它位於 中央管理的管理元數據服務 - >管理服務應用 並點擊權限在功能區,並確保用戶在你的運行代碼具有正確的訪問。

我總是確保我知道我是誰運行代碼,首先是開始,然後做檢查

+0

,但我以提升的權限運行,是應該作爲SYSTEM –

+1

運行我明白,你是然而,這(我相信)使你的代碼運行在應用程序池帳戶的上下文中,但是全部取決於你從哪裏調用代碼。轉到上面的頁面,檢查您認爲您在上下文中運行的帳戶是否獲得了權限。如果不是,那麼這可能是你的問題的原因,如果不是,我建議你找出你的帳戶到底是什麼帳戶。我有很多時間以爲我運行在正確的帳戶,發現我沒有。 – Truezplaya

+0

將應用程序池帳戶添加爲專業版管理員,並且您將以提升的權限正常運行 – Verthosa

相關問題