如何声明一个空的 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);
我正在根据我的 .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);