在做SharePoint Online开发的过程中,很有可能会用到SharePoing Server发布功能,经典的发布功能在现代通信站点(communication site)下是不可用的,那我们又要使用这个功能怎么办?通过变通的方法可以强制开启功能。
先要开启网站集的SharePoint Server发布基础架构(SharePoint Publishing Infrastructure),再在网站功能上开启发布功能。
var siteUrl = "https://*****.sharepoint.com/sites/Qiumc";
OfficeDevPnP.Core.AuthenticationManager authAdmin = new OfficeDevPnP.Core.AuthenticationManager();
ClientContext adminContext = authAdmin.GetWebLoginClientContext(siteUrl, null, false);
adminContext.RequestTimeout = 380000;
var site = adminContext.Site;
var web = adminContext.Web;
var webFeatures = adminContext.Web.Features;
var siteFeatures = adminContext.Site.Features;
adminContext.Load(site);
adminContext.Load(web);
adminContext.Load(siteFeatures);
adminContext.Load(webFeatures);
adminContext.ExecuteQuery();
//删除发布功能
//webFeatures.Remove(new Guid("94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb".ToUpper()), true);
//siteFeatures.Remove(new Guid("F6924D36-2FA8-4f0b-B16D-06B7250180FA"), true);
//开启网站集发布基础架构
siteFeatures.Add(new Guid("F6924D36-2FA8-4f0b-B16D-06B7250180FA"), true, FeatureDefinitionScope.None);
adminContext.ExecuteQuery();
//开启网站的发布功能
webFeatures.Add(new Guid("94c94ca6-b32f-4da9-a9e3-1f3d343d7ecb".ToUpper()), true, FeatureDefinitionScope.Farm);
adminContext.ExecuteQuery();
使用PowerShell也是可以开启的,对PowerShell理解不深,本机也没有安装插件,所以就不写了,基本原理是一样的