2010-08-25 63 views
1

我想使用EnsureUser讓用戶回到SharePoint客戶端OM中。我的代碼是:EnsureUser沒有返回有效的用戶

ClientContext clientContext = new ClientContext(siteUrl); 
User spUser = clientContext.Web.EnsureUser(user); 

其中siteUrl和user都是根據需要設置的字符串。

結果是spUser是用戶對象的外殼,但其所有屬性(例如電子郵件,標題等)未初始化。在VS中,他們顯示{「屬性或字段尚未初始化,沒有被請求或請求未被執行,可能需要明確請求。」}

什麼會導致這種情況?我認爲EnsureUser會創建用戶,如果它不在那裏。我知道在Server OM中有時需要使用「AllowUnsafeUpdates」,對於客戶端OM來說有沒有類似的東西?

+0

你打算使用'clientContext.Web.EnsureUser(user)'嗎? – kbrimington 2010-08-25 23:04:15

+0

是的,這只是一個複製錯誤,我打算使用clientContext.Web.EnsureUser – cmptrer 2010-08-26 00:17:31

回答

6

這已經快一年了,但以防其他人在尋找相同的答案。 獲取用戶對象的引用後,您需要在訪問用戶的屬性之前執行以下操作。

clientContext.Load(spUser); 
clientContext.ExecuteQuery(); 

或者如果你想獲得電子郵件和標題只是爲了減輕工資負擔。

clientContext.Load(spUser, u => u.Email, u => u.Title); 
clientContext.ExecuteQuery(); 

基本上,它建立到SharePoint Web的請求並詢問spUser的屬性。當調用ExecuteQuery()時,請求將被髮送。

+0

感謝您花時間回答,它肯定幫助我:) – 2011-10-04 08:39:05