Sharepoint ClientContext在服务中的使用

时间:2016-03-22 11:09:18

标签: c# sharepoint dependency-injection

我在其中一个WCF服务中使用SharePoint SDK。

要从SharePoint获取字节数组(文档),我使用SDK的ClientContext类。对SharePoint的调用都包含在名为SharePointConnector的自定义类中(如某种存储库模式)。

我的目标是使用接口ISharePointConnector在我的wcf服务中注入SharePointConnector类。

我的问题:

  1. 我应该在SharePointConnector的构造函数中创建ClientContext,还是应该在每次调用时使用它,包含在using块中?我担心:创建ClientContext是一项昂贵的调用吗?当在clientContext成员变量的同一个实例上进行多次调用时,线程是否安全?
  2. 我应该在什么时候注册url以便它可以在ClientContext的构造函数中使用?
  3. 请注意,通过在构造函数中创建ClientContext实例来实现它,很难获得创建ClientContext实例所需的url,因为DI容器的构造函数注入....

1 个答案:

答案 0 :(得分:2)

我非常建议您在方法范围内使用ClientContext(或者在您的情况下进行任何调用),而不是在构造函数中实现它,主要有两个原因:

  1. 灵活性:在特定情况下,您可以根据自己的需要调整ClientContext
  2. 资源:正如您已经指出的那样,ClientContext实现了IDisposable接口,因此在使用后应该处理/释放,这样可以节省您的费用一些资源。你知道演习:

    using (ClientContext clientCtx = new ClientContext(siteUrl)){ //do your stuff... }