无法在SharePoint Online中通过CSOM重命名子网站URL

时间:2020-09-14 04:54:36

标签: sharepoint sharepoint-online csom

我已经建立了SharePoint Online网站,并创建了提供商托管的应用程序。该应用程序的功能之一是创建子站点,有时需要重命名子站点,包括重命名子站点URL。我可以使用CSOM创建子站点,而不会出现任何问题,但是当我尝试重命名URL时,出现访问被拒绝错误。如果仅更改子站点的标题和描述,就没有问题。如果我通过浏览器(使用相同的用户帐户!)登录到SharePoint Online,并且使用UI重命名URL,则它可以正常工作。我用来重命名URL的SharePoint页面是https://tenant.sharepoint.com/testproject/_layouts/15/prjsetng.aspx

我已经在Microsoft 365开发者订阅(我将在其中进行大部分开发和测试)和最终将解决方案部署到的主SharePoint Online网站上进行了尝试。我不太了解SPO主站点的详细信息,其他人对其进行了设置,并且提供了一个帐户来测试重命名该子站点。明确地说,我能够通过开发人员站点和主要SharePoint Online网站中的UI重命名子站点URL。

我在做错什么吗?通过SharePoint Online中的代码重命名子网站URL是否有限制? SharePoint Online中是否有一个错误可以阻止使用代码重命名子网站URL?

引发的异常包括ServerErrorTypeName =“ Microsoft.SharePoint.SPException”。我可以获取相关ID,但是据我了解,这在SharePoint Online中没有用。异常消息的字面意思是“访问被拒绝”。没有内部异常。

这是我用来重命名子站点的代码:

SharePointContext spContext = SharePointContextProvider.Current.GetSharePointContext(HttpContext);
ClientContext clientContext = new ClientContext(spContext.SPHostUrl)
{
    Credentials = new SharePointOnlineCredentials("SPUserName", "SPPassword".ToSecureString())
};
var webUrl = request.OldProjectUrl;
var subweb = clientContext.Site.OpenWeb(webUrl);
clientContext.Load(subweb);
clientContext.ExecuteQuery();
subweb.Title = request.ProjectName;
subweb.Description = request.ProjectName;
subweb.ServerRelativeUrl = "/HardcodedForTesting"; // <-- if I skip this line there is no error
subweb.Update();
clientContext.ExecuteQuery();

1 个答案:

答案 0 :(得分:0)

只需在我的环境上进行测试,我就可以正常通过CSOM代码重命名子站点URL。我使用与您相同的代码。

对于您的问题,最好与Microsoft建立服务请求。