karekarmahadev Ответов: 1

Как найти дочерний узел документа в sharepoint online с помощью CSOM C#.


Учитывая url - адрес документа sharepoint online, например " https://demo.sharepoint.com/sites/Site1/SubSite1/subsiteDocumentLib/DEMO_Doc.docx"

Мне нужно найти url-адрес дочернего сайта программно, то есть "https://demo.sharepoint.com/sites/Site1/SubSite1/ "

Я уверен, что с корневой URL-адрес сайта и данные для связи: https://demo.sharepoint.com/sites/Site1/


using (ClientContext cContext = new ClientContext("https://demo.sharepoint.com/sites/Site1/"))
       {
           cContext.Credentials = BuildCreds();


           Site s = cContext.Site;
           cContext.Load(s);
           cContext.ExecuteQuery();
           Web web = cContext.Site.OpenWeb("/sites/Site1/SubSite1/");  //i need to use in this method as  i need to load document from subsite
           cContext.ExecuteQuery();
       }


Что я уже пробовал:

Я пытался получить url-адрес, используя позицию"/", но это не удается, когда в библиотеке документов есть папки.

1 Ответов

Рейтинг:
1

karekarmahadev

мне удалось получить решение для этого

public static void GetWebUrl()
 {

            string fileUrl ="https://demo.sharepoint.com/sites/Site1/SubSite1/subsiteDocumentLib/DEMO_Doc.docx";
            Uri fileUri = new Uri(fileUrl);

            ClientContext rootContext = new ClientContext(fileUri.Scheme + Uri.SchemeDelimiter + fileUri.Host);
            Uri webUrl = Web.WebUrlFromPageUrlDirect(rootContext, fileUri);

            ClientContext subContext = new ClientContext(webUrl.ToString());
           


}


Richard Deeming

Вы можете заменить его:

fileUri.Scheme + Uri.SchemeDelimiter + fileUri.Host
с:
fileUri.GetLeftPart(UriPartial.Authority)

Uri.GetLeftPart(UriPartial) Метод (Система) | Microsoft Docs[^]