2011-10-12 42 views
6

我正在構建Web部件以放置Sharepoint我的網站。我需要獲取其網站部分所在的SPUser。目前我只是使用我的網站是誰? (以編程方式)

Request.QueryString["accountname"] 

但這不會在我自己的我的網站上工作,我不知道它會一直工作。

回答

2

Request.QueryString["accountname"]爲空時,用戶應該是自己的mysite,那麼你可以看看SPContext.Current.Web.CurrentUser來獲取用戶。

+2

是的,但不要忘記,CurrentUser屬性返回當前登錄的用戶,而不是你的MySite用戶。我想從查詢字符串中獲取帳戶名將是您唯一的選擇 – int32

+0

正如Nacht在他的文章中寫道的,當您在自己的MySite上時沒有帳戶名查詢字符串,因此您需要考慮代碼中的兩種情況:當對其他人MySite使用查詢字符串,當用戶使用MySite時,查詢字符串是空的,然後查看登錄用戶的SPContext。 – Daniel

+0

使用網絡請求看起來像一個黑客,但如果這是我唯一的選擇,這是我唯一的選擇。謝謝! – Nacht

2

這裏是使用用戶配置(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另一種方法;

+0

嗯....有趣...這是保證每次工作?它看起來像它可能只適用於我的網站的主頁 – Nacht

+0

我有多個頁面mysite和它的工作 – luccio

+0

好吧然後,很酷,謝謝 – Nacht

1

另一種可能的方法是使用SPSiteOwner屬性。這會給你一個SPUser對象,通常是最好的。該屬性與「站點所有者」屬性相關,該屬性可在中央管理員的「更改站點集合管理員」下進行配置。但請注意,由於可以對其進行配置,因此不會將其作爲知道我的網站位於何處的絕對來源。

+0

這也可能會拋出403禁止當用戶有權訪問子網站但沒有個人網站根,就像在博客。 – Luizgrs

相關問題