我正在構建Web部件以放置Sharepoint我的網站。我需要獲取其網站部分所在的SPUser。目前我只是使用我的網站是誰? (以編程方式)
Request.QueryString["accountname"]
但這不會在我自己的我的網站上工作,我不知道它會一直工作。
我正在構建Web部件以放置Sharepoint我的網站。我需要獲取其網站部分所在的SPUser。目前我只是使用我的網站是誰? (以編程方式)
Request.QueryString["accountname"]
但這不會在我自己的我的網站上工作,我不知道它會一直工作。
當Request.QueryString["accountname"]
爲空時,用戶應該是自己的mysite,那麼你可以看看SPContext.Current.Web.CurrentUser
來獲取用戶。
這裏是使用用戶配置(Microsoft.Office.Server.UserProfiles)
var profileLoader = Microsoft.SharePoint.Portal.WebControls.ProfilePropertyLoader.FindLoader(HttpContext.Current.Handler as Page);
var userProfile = profileLoader.ProfileLoaded;
var loginName = userProfile["AccountName"];
然後從SPContext.Current.Web只是讓你SPUser另一種方法;
另一種可能的方法是使用SPSite
的Owner
屬性。這會給你一個SPUser
對象,通常是最好的。該屬性與「站點所有者」屬性相關,該屬性可在中央管理員的「更改站點集合管理員」下進行配置。但請注意,由於可以對其進行配置,因此不會將其作爲知道我的網站位於何處的絕對來源。
這也可能會拋出403禁止當用戶有權訪問子網站但沒有個人網站根,就像在博客。 – Luizgrs
是的,但不要忘記,CurrentUser屬性返回當前登錄的用戶,而不是你的MySite用戶。我想從查詢字符串中獲取帳戶名將是您唯一的選擇 – int32
正如Nacht在他的文章中寫道的,當您在自己的MySite上時沒有帳戶名查詢字符串,因此您需要考慮代碼中的兩種情況:當對其他人MySite使用查詢字符串,當用戶使用MySite時,查詢字符串是空的,然後查看登錄用戶的SPContext。 – Daniel
使用網絡請求看起來像一個黑客,但如果這是我唯一的選擇,這是我唯一的選擇。謝謝! – Nacht