[sharepoint]修改Item或者File的Author和Editor
修改 File 或者 Sharepoint item Editor
2023-09-14 09:01:01 时间
最近项目中调用sharepoint rest api方式获取文件或者Item列表,而用的方式是通过证书请求,在上传文件,或者新建item的时候,默认的用户是在sharepoint端注册的用户,并不能满足需求,需要对其进行修改。因为注册的app,会将该注册的clientid和issurid对应的应用程序作为一个新的用户。关于注册的方式可以参考之前写的几篇文章。
WebHttpRequest在sharepoint文档库中的使用
ClientContext spContext = new ClientContext("http://xxx//xxxx/xxx"); spContext.ExecutingWebRequest += spContext_ExecutingWebRequest; Web website = spContext.Web; spContext.Load(website); Microsoft.SharePoint.Client.File file = website.GetFileByServerRelativeUrl(serverReleativeUrl); ListItem item = file.ListItemAllFields; string loginName = @"i:0#.w|domain\" + _siteInfo.UserName; User user = spContext.Web.EnsureUser(loginName); item["Editor"] = user; item["Author"] = user; file.ListItemAllFields.Update(); spContext.ExecuteQuery();
验证
public void spContext_ExecutingWebRequest(object sender, WebRequestEventArgs e) HttpWebRequest webReq = e.WebRequestExecutor.WebRequest; TokenHelper.ClientId = _siteInfo.ClientId; TokenHelper.IssuerId = _siteInfo.IssureId; var accessToken = TokenHelper.GetS2SAccessTokenWithWindowsIdentity(new Uri(_siteInfo.AppUrl), null); webReq.Method = "Post"; webReq.Accept = "application/json;odata=verbose"; webReq.Headers.Add("Authorization", "Bearer " + accessToken); }
修改Item类似
/// summary /// 修改Item的作者和编辑者 /// /summary /// param name="siteInfo" /param /// param name="itcode" /param /// param name="itemId" /param public static void UpdateItemAuthor(SiteInfo siteInfo, string itcode, int itemId) ClientContext spContext = new ClientContext(siteInfo.Url); spContext.ExecutingWebRequest += spContext_ExecutingWebRequest; Web web = spContext.Web; spContext.Load(web); spContext.ExecuteQuery(); List lst = web.Lists.GetById(new Guid(siteInfo.ListId)); spContext.Load(lst); spContext.ExecuteQuery(); ListItem item = lst.GetItemById(itemId); string loginName = @"i:0#.w|lenovo\" + itcode; User user = web.EnsureUser(loginName); item["Author"] = user; item["Editor"] = user; item.Update(); spContext.ExecuteQuery(); }
在修改或者新建item或者File的时候需要先获取contextinfo
/// summary /// 获得contextinfo /// /summary /// param name="siteInfo" /param /// returns /returns private static string GetContextInfo(SiteInfo siteInfo) HttpWebRequest contextInfoRequest = null; HttpWebResponse contextInfoEndpointResponse = null; StreamReader contextInfoStream = null; Uri hostWebUri = new Uri(siteInfo.Url); TokenHelper.ClientId = siteInfo.ClientId; TokenHelper.IssuerId = siteInfo.IssureId; var accessToken = TokenHelper.GetS2SAccessTokenWithWindowsIdentity(hostWebUri, null); //获取contextinfo contextInfoRequest = (HttpWebRequest)HttpWebRequest.Create(siteInfo.Url + "/_api/contextinfo"); contextInfoRequest.Method = "POST"; contextInfoRequest.Accept = "application/json;odata=verbose"; contextInfoRequest.ContentLength = 0; contextInfoRequest.Headers.Add("Authorization", "Bearer " + accessToken); contextInfoEndpointResponse = (HttpWebResponse)contextInfoRequest.GetResponse(); contextInfoStream = new StreamReader(contextInfoEndpointResponse.GetResponseStream(), Encoding.UTF8); string strContextInfoJson = contextInfoStream.ReadToEnd(); return strContextInfoJson; catch (Exception ex) throw ex; finally if (contextInfoEndpointResponse != null) contextInfoEndpointResponse.Dispose(); if (contextInfoStream != null) contextInfoStream.Dispose(); }
如果在请求的时候能带上账户信息,是最简单的一种方式,默认的就是当前的用户信息。比如spContext.Credentials =new NetWorkCredentials (uid,pwd,domain);或者在模拟请求的时候request.Credentials =new NetWorkCredentials (uid,pwd,domain);这种方式就不用再次请求进行修改文件或者item的属性了。默认的就是当前请求的用户。
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。http://www.cnblogs.com/wolf-sun/p/4756088.html
How to render S4 Code List extension field into CRM WebUI product search view This question is asked by Wade. Suppose I have created one extension field in S4 with type CodeList which contains all possible queue type supported by JDK. This extension field must be exposed to CRM Product Search WebUI. POC is done in X3C/504:
有时候我们想新建某类型文件的时候,默认出现一些基础代码,而不是空白的。 比如当新建一个 html 文件 基础代码是这样的:
Cloak-And-Dagger-From-Two-Permissions-To-Complete-Control-Of-The-UI-Feedback-Loop 立即下载
相关文章
- C#如何设置窗体不能修改大小
- data gurad物理备份方式下standby_file_management为manual时修改表空间的操作
- 使用SAP CRM WebClient UI Design layer修改field label
- 修改title和icon小图片demo效果示例(整理)
- Android 10.0 修改LocalOnlyHotspot默认的SSID和密码
- 已解决无法访问您的文件该文件可能已被移至别处、修改或删除。 ERR_FILE_NOT_FOUND
- 已解决FileNotFoundError: [Errno 2] No such file or directory: ‘E:自动备份文档Python修改配置.csv‘
- 【错误记录】IntelliJ IDEA 中 Java 代码中的中文注释报错 ( Menu / File / Settings / Editor / File Encodings 中修改工程编码 )
- Python 修改json file
- windows IIS 日志字段修改,修改IIS日志字段,修改IIS 日志路径
- ceph 13.2.10 在线修改参数 osd 心跳时间设置 内存限制
- android10 修改媒体音的默认值
- pycharm如何修改注释行字体及颜色
- 【Python 实战】---- 批量修改文件名和将txt转excel