如何声明一个空的 ClientContext

How to Declare an Empty ClientContext

我正在根据我的 .NET 代码中的 SharePoint 版本实施新的身份验证方法,该方法可能因 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);

我不确定这是否有帮助,但我会尽力而为:)。

ClientContext 构造函数必须有一些参数 -> Link

所以您可以做的就是创建未初始化的 ClientContext,然后检查它是否不为空...应该这样做(基于您的代码示例):



    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);