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;
}
}
});
}
,但我以提升的權限運行,是應該作爲SYSTEM –
運行我明白,你是然而,這(我相信)使你的代碼運行在應用程序池帳戶的上下文中,但是全部取決於你從哪裏調用代碼。轉到上面的頁面,檢查您認爲您在上下文中運行的帳戶是否獲得了權限。如果不是,那麼這可能是你的問題的原因,如果不是,我建議你找出你的帳戶到底是什麼帳戶。我有很多時間以爲我運行在正確的帳戶,發現我沒有。 – Truezplaya
將應用程序池帳戶添加爲專業版管理員,並且您將以提升的權限正常運行 – Verthosa