微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

我已经建立了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();

解决方法

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。