我在sharepoint admin站点(http://sharepointserver:port(的页面中的webpart中有一个,我想从mysite读取一些信息:
SPUserToken objSPUserToken = SPContext.Current.Site.SystemAccount.UserToken;
//SPUserToken objSPUserToken = SPContext.Current.Web.CurrentUser.UserToken;
using (SPSite mainSite = new SPSite("http://sharepointserver/sites/mysite", objSPUserToken))
{
SPWeb mainWebSite = mainSite.OpenWeb();
SPListItemCollection listItemsP = mainWebSite.Lists["Pages"].Items;
}
当我从Visual Studio运行它时,请询问用户/密码并正常执行,但是当我发布WSP并从浏览器运行时,我会有消息:对不起,此网站尚未与您共享
我已经尝试使用CurrentUser(注释的行(,它甚至从Visual Studio中也避开了相同的消息。
我敢肯定用户有权进入MySite,您对发生的事情有任何了解吗?
谢谢!
修改代码如下。
SPSecurity.RunWithElevatedPrivileges(delegate()
{
//New SPSite object.
using (SPSite mainSite = new SPSite("http://sharepointserver/sites/mysite"))
{
using (SPWeb mainWebSite = mainSite.OpenWeb())
{
SPListItemCollection listItemsP = mainWebSite.Lists["Pages"].Items;
}
}
});
参考:spsecurity.runwithelevedprivileges方法
我终于明白了,消息"对不起,此站点尚未与您共享"的原因是因为SharePoint登录到网站不是当前用户,而是池的帐户,因此该消息表明尚未为SP_APPLICATIONPOOL或SP_FARM帐户共享该站点。我解决了将多数民众赞成在MySite中的添加。
感谢您的帮助!