陆陆续续做了10年多的 SharePoint 开发,一直对于 CSOM 这种“边缘学科”不是很感兴趣,觉得使用的很少。
因为越来越多的项目开始从服务器端直接走向 Web 前端开发,用的大多数是 JSOM 这种基于浏览器的 JS API,现在 SPFx 也出现了,CSOM 的生存空间越来越小了。
不过这两年做的项目中,居然连续 3次用到了CSOM。其中两次是开发 Web API,一次是开发控制台程序,用于计划任务。
前几天有这么一个需求:
使用 CSOM 开发一个 Provider-Hosted SharePoint Add-in,部署到 SharePoint Online环境。
其中有个功能需要做成 Web API,使用一个权限比较高的账户作为“代理”,来存取列表中的数据。
以前在 SharePoint 2016上部署 Web API 的时候,也是这种“前端 JS + Web API”的模式,当时用的是 AD 账户。
在 2016 环境中,我们用过 2种方式来控制 Web API的运行账户:
- 在运行 Web API 的 IIS 应用程序中,配置其应用程序池(Application Pool)用指定的账户运行,保存的时候会要求你输入2次密码确认。
- 程序在获取 Context 之后,用代码设置它的 Credentials 属性,赋予它运行所使用的账户信息。代码如下:
public static ClientContext GetContextBySite(string siteUrl)
{
ClientContext context = new ClientContext(siteUrl);
conte