OfficeDev PNP:AddClientSitePage 不与子站点一起使用
OfficeDev PNP : AddClientSitePage not working with a Subsite
在 LINQPad 中使用以下代码,使用最新的 (3.24.2008) OfficeDev SharePoint PnP Core Library for SharePoint Online
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
子站点的站点页面库中构建的。
据我所知,从 web.GetWeb()
返回的 ClientContext
仍然设置为父级的 (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();
在 LINQPad 中使用以下代码,使用最新的 (3.24.2008) OfficeDev SharePoint PnP Core Library for SharePoint Online
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
子站点的站点页面库中构建的。
据我所知,从 web.GetWeb()
返回的 ClientContext
仍然设置为父级的 (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();