2011-10-12 45 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