我正在构建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