如何解决OfficeDev PNP:AddClientSitePage无法与子站点一起使用
在LINQPad中使用以下代码,并使用最新的(3.24.2008)Office Online for SharePoint Online的OfficeDev SharePoint PnP核心库
void Main()
{
var baseSite = "https://contoso.sharepoint.com";
var sharepointSite = "/ussdallas";
var siteUrl = $"{baseSite}{sharepointSite}";
var userEmailAddress = "nhodge@contoso.onmicrosoft.com";
var pageName = "ContosoMarketResearch.aspx";
var authenticationManager = new OfficeDevPnP.Core.AuthenticationManager();
var context = authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(siteUrl,"nhodge@contoso.onmicrosoft.com","contoso!contoso");
var web = context.Web;
context.Load(web);
context.ExecuteQuery();
var subSite = web.GetWeb("redoctober"); // the "sub site" of the "ussdallas" site is "redoctober"
var subSitePage = subSite.AddClientSidePage(pageName,true);
subSitePage.Save();
}
(AddClientSidePage()
中的 true 强制保存到SharePoint)
结果是因为ClientSidePage是在ussdallas
的站点页面库而不是redoctober
子站点的站点页面库中构建的。
根据我的判断,从ClientContext
返回的web.GetWeb()
仍设置为父级(ussdallas
)ClientContext
...这就是制作页面的原因在错误的网站上。
正在寻找OfficeDev SharePoint PnP Core Library
的源……但是我无法弄清楚如何“交换”上下文。我会再做一个吗?此时用户已经登录。
对此有任何已知的解决方案吗?
解决方法
您可以尝试通过以下方式交换上下文:
context= authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(siteUrl + "/sub1",userName,password);
var subSite = context.Web;
context.Load(subSite);
context.ExecuteQuery();
var subSitePage = subSite.AddClientSidePage(pageName,true);
subSitePage.Save();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。