Как объявить пустой ClientContext - PullRequest
0 голосов
/ 15 января 2020

Я реализую новый метод аутентификации в соответствии с версией SharePoint в моем коде. NET, который может различаться в зависимости от URL-адреса. Однако я не уверен, как объявить пустую переменную ClientContext.

Ниже приведен фрагмент кода:

Uri lUri = new Uri(pSiteUrl);

//To declare an empty ClientContext variable here//

if (pSiteUrl.StartsWith(ConfigurationManager.AppSettings["New_URL"]))
{
    ClientContext lClientContext = SPOClientContext.GetAuthenticatedContext(pSiteUrl);
}
else
{
    ClientContext lClientContext = new ClientContext(pSiteUrl);
}

//lClientContext does not exists if it is not initialised outside the if-else statement above
Folder lRootFolder = lClientContext.Web.GetFolderByServerRelativeUrl(lUri.AbsolutePath + pFolderPath);

1 Ответ

2 голосов
/ 15 января 2020

Я не уверен, поможет ли это, но я постараюсь сделать все возможное :).

Конструктор ClientContext должен иметь некоторый параметр -> Ссылка

Итак, вы можете просто создать не инициализированный ClientContext, а затем проверить, не было ли оно пустым ... что-то вроде этого должно быть сделано (на основе примера кода You):



    ClientContext lClientContext = null;
    if (pSiteUrl.StartsWith(ConfigurationManager.AppSettings["New_URL"]))
    {
        lClientContext = SPOClientContext.GetAuthenticatedContext(pSiteUrl); // not sure what actually this is??
    }
    else
    {
        lClientContext = new ClientContext(pSiteUrl);
    }

    if (lClientContext != null)
    {
        Folder lRootFolder = lClientContext.Web.GetFolderByServerRelativeUrl(lUri.AbsolutePath + pFolderPath);
        lClientContext.Dispose();
    }


... просто, пожалуйста, помните, что ClientContext всегда должен быть расположен в конце

возможно, какой-то более понятный вариант будет что-то вроде этого (таким образом, вам не нужно думать о Dispose () в конце)



    public void DoSomething()
    {
        string pSiteUrl = "";
        string somePath = "";
        using (var lClientContext = CreateClientContext(pSiteUrl))
        {
            Folder lRootFolder = lClientContext.Web.GetFolderByServerRelativeUrl(somePath);
        }
    }

    private ClientContext CreateClientContext(string uri) =>
        uri.StartsWith(ConfigurationManager.AppSettings["New_URL"]) ? 
            SPOClientContext.GetAuthenticatedContext(uri) : 
            new ClientContext(uri);


...