在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况...

news/2024/5/20 23:01:15/文章来源:https://blog.csdn.net/weixin_34242658/article/details/85636541

自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化;自从SharePoint 2010开始有了Client Side Object Model ,我们就可以不用在服务器上开发SharePoint解决方案了,开发的方式更加多元化,这又加速了SharePoint 更大范围的应用。

现在,我们可以在任一台PC上安装Visual Studio 然后使用类似于 Object Model的模型来访问服务器上的列表、网站或是其它任何东东。

那么 ,如何使用 Client Side Object Model 客户端代码获得SharePoint 网站、列表的权限情况呢,我们需要一台客户机先利用VS建一个“控制台”程序,在这个程序里,我们要进行如下的步骤:

1. 新建一个“控制台程序”, 添加Client Side Object Model客户端的DLL文件到项目的“引用”当中,

您需要添加如下2个文件:

Microsoft.SharePoint.Client.dllMicrosoft.SharePoint.Client.Runtime.dll

这2个文件可以从SharePoint服务器中找到,方便大家,我提供一下地址(如果是SharePoint 2010,请把15换成14):

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\ISAPI

因为服务器是X64的,您老如果使用X86的Win7,也没有关系照样可以使用这个64位DLL,但这个项目,一定要保证目标平台是“Any”。否则会出错。

 

2. 打开代码文件,前面添加引用:using Microsoft.SharePoint.Client

然后在 Main 函数,中复制,粘贴如下的代码到Main 函数中, 

     //如果你想获得SITE的权限列表,应该这样写//string ObjectType = "Site", ObjectTitle = "网站名称", SiteUrl = "网站的URL";string ObjectType = "List", ObjectTitle = "文档", SiteUrl = "http://sp2013";ClientContext clientContext = new ClientContext(SiteUrl);clientContext.Credentials = new NetworkCredential("administrator", "密码");List selectedList = null;Web selectedWeb = null;Console.WriteLine("Object:" + ObjectType + " Name:" + ObjectTitle + " URL:" + SiteUrl);try{if (ObjectType != "Site"){selectedList = clientContext.Web.Lists.GetByTitle(ObjectTitle);clientContext.Load(selectedList);  }else{selectedWeb = clientContext.Web;                clientContext.Load(selectedWeb);}clientContext.ExecuteQuery();}catch (Exception  wex){Console.WriteLine(wex.Message);Console.ReadLine();return;}RoleAssignmentCollection ras = null;if (ObjectType != "Site"){ras = selectedList.RoleAssignments;clientContext.Load(ras);}else{ras = selectedWeb.RoleAssignments;clientContext.Load(ras);}clientContext.ExecuteQuery();Console.WriteLine("It has " + ras.Count + " role assignments");foreach (var ra in ras){clientContext.Load(ra.RoleDefinitionBindings);clientContext.Load(ra.Member);clientContext.ExecuteQuery();foreach (var definition in ra.RoleDefinitionBindings){clientContext.Load(definition, d => d.Name);clientContext.ExecuteQuery();//C#在输入中英文混合字符时,对齐会不正常,这个语句主要是给用户名添加空格的string tmpname = ra.Member.Title.Trim() + new string(' ', 30 - Encoding.Default.GetByteCount(ra.Member.Title.Trim()));Console.WriteLine("{0,-20}{1}{2,-15}", ra.Member.PrincipalType.ToString().Trim(), tmpname, definition.Name);}}Console.ReadLine();

 

说明:

只要改变一下红色标记的变量值,这个代码就可以获得任意网站、列表的权限情况, 如果是网站就把 ObjectType变量写成Site,如果是列表就把ObjectType写成是List,其它的不解释了。

 

示例结果:

 

Client-Side 的原理:

1、初始化Web,

ClientContext(SiteUrl)  ,这个函数可以返回类似于OM中的SPWeb的对象, 并且不需要从SPSite中获取。

2、必在使用对象的属性代码前,加上如下语句,有了这个语句,系统才会向服务器提交HTTP查询,对象的属性才可以被使用。

clientContext.Load(变量名或是对象,linq表达式);
clientContext.ExecuteQuery();

 

具体可以参考MSDN的相关文章,相信您一定会很快入门:

非常好的PPT:

https://spstc-public.sharepoint.com/Lists/Sessions/Attachments/24/Client-Side%20Object%20Model%20for%20SharePoint%202013%20-%20Bleeker.pdf

非常好的中文入门教材:

http://msdn.microsoft.com/zh-cn/office/fp179912

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_752987.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万网免费主机wordpress快速建站教程-域名申请

在上一篇文章中,小伙伴们已经申请好了万网的免费主机,接下来教大家如何申请域名。 由于万网免费主机要绑定在阿里备案的域名,现在以万网的域名注册为例子。 首先进入万网域名注册页面(http://www.net.cn/domain)&#…

网站统计中的数据收集原理及实现_埋点统计

网站数据统计分析工具是网站站长和运营人员经常使用的一种工具,比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网站访问数据的收集。目前主流的数据收集方式基本都是基于javascript的。本文将简要分析这种数据收集的原理&#xf…

一个普通网站发展成大型网站的架构演变历程

2019独角兽企业重金招聘Python工程师标准>>> 1、物理分离webserver和数据库 最开始,由于某些想法,于是在互联网上搭建了一个网站,这个时候甚至有可能主机都是租借的,但由于这篇文章我们只关注架构的演变历程&#xff0…

IT招聘网站

2019独角兽企业重金招聘Python工程师标准>>> http://www.ithelloworld.com/ 转载于:https://my.oschina.net/lilugirl2005/blog/359953

20款覆盖全面的响应式网站设计工具

2019独角兽企业重金招聘Python工程师标准>>> 灵活的栅格和布局,响应式的图片和智能的CSS媒体查询,构成了响应式网页的主要特征。当用户扔下沉重的笔记本电脑拿起平板,响应式的网站能够自然而然地随之适配,掏出手机也毫…

微软正式发布Azure Storage上的静态网站

微软正式宣布了Azure Storage上的静态网站,提供了从托管在Azure Storage上的HTML、CSS和JavaScript文件提供内容的能力。静态网站包含内容固定的Web页面,同时仍然允许利用JavaScript等客户端代码来创建丰富的用户体验。 有了这个新功能,继用于…

flac转mp3_免费的音视频格式转换网站-ncm, qmc, mflac, mgg转mp3

1、.mov转换为.mp4.mov是QuickTime影片格式,是Apple公司开发的一种音频、视频文件格式。我们只需要iMovie打开相关文件,然后重新导出即可,iMovie默认导出的视频格式就是.mp42、.mp4转换为.gifMP4轉GIF轉換器。在线自由 - Convertio​converti…

对某网站被挂黑广告源头分析

公粽号:黒掌 一个专注于分享网络安全、黑客圈热点、黑客工具技术区博主! 背景 目标站点是国内一家有影响力的综合技术网站。通过网管人员及技术人员多次排查均告失败或者未能解决问题。 网站不断被人疑似挂马,在其所有网站上发现挂有图片的…

Wordpress 网站搭建及性能监控方法详解!

前言 说到 Wordpress,大家往往想到的是博客,其实,如今的 WordPress 已经成为全球使用量最多的开源 CMS 系统。并且,如果你有一定的技术基础稍加改动,就可以搭建出新闻网站、企业网站、电影网站,甚至是商城系…

程序员资源网站

2019独角兽企业重金招聘Python工程师标准>>> soho接单 程序员客栈 http://www.proginn.com/ 极客邦soho http://www.looip.cn/ 好用的markup博客 droplets http://dropplets.com/ 招聘网站 电猴 (针对电商) http://www.dianhou.com/…

宠物合成网站源码_如何阅读大型前端开源项目的源码,授人以鱼不如授人以渔...

目前网上有很多「XX源码分析」这样的文章,不过这些文章分析源码的范围有限,有时候讲的内容不是读者最关心的。同时我也注意到,源码是在不断更新的,文章里写的源码往往已经过时了。因为这些问题,很多同学都喜欢自己看源…

网站技术架构与性能优化,附高性能思维导图

一).大型软件系统的特点1.高并发2.高可用3.海量数据4.用户分布广泛,网络情况复杂5.安全环境恶劣6.需求快速变更,发布频繁二).大型网站架构发展历程1.应用服务和数据服务分离2.大量使用缓存改善网站性能(CDN加速、反向代理)3.使用服…

杂志类网站参考

2019独角兽企业重金招聘Python工程师标准>>> 爱范儿 http://www.ifanr.com/ Ghost http://marketplace.ghost.org/Medium https://medium.com/ 转载于:https://my.oschina.net/lilugirl2005/blog/593673

php 新浪微博登陆,PHP使用新浪微博登入第三方网站实例代码

之前我写过一个使用php使用QQ一键登入第三方网站的教程,今天我再给大家分享PHP使用新浪微博API一键登入第三方的网站,好吧,不说废话,下面开始。注册登入新浪微博以后,可以点在新浪微博底部的开放平台链接进入&#xff…

这些优化 Drupal 网站速度的超简单办法,你忽略了多少?

“怎么样能让我的 Drupal 网站更快一些?”是我们最常遇到的一个问题。站点速度确实非常重要,因为它会影响你的 SEO排名效果、访客是否停留以及你自己管理网站所需要的时间。今天我们就来看看那些通过 Drupal 自带界面便能够实现的提速操作。启用缓存通过…

发布网站的程序池应用程序_大程序? 经常发布

发布网站的程序池应用程序我正在研究“ 敏捷和精益计划管理:整个组织的协作”的发行计划一章。 有许多计划发布的方法。 但是关键呢? 经常释放。 多常? 我建议每月一次。 是的,每月一次真正,诚实到善的发布。 我敢打…

【网站搭建】用阿里云服务器搭建个人网站

文章目录搭建过程如下:1 准备工具:2 详细过程(1)进入控制台(2)进入轻量应用服务器管理台(3)远程连接(4)下载宝塔面板(5)添加网站&…

【网站搭建】完整部署django+uwsgi+nginx

上次记录了云服务器上运行django的过程,成功打开HelloWorld界面,但是这样每次运行都需要使用python3 manage.py runserver命令,不能在后台运行,而且加载页面速度较慢。因此本次记录新增两个服务的部署,即nginx uwsgi。…

进攻即是最好的防御!19个练习黑客技术的在线网站

2019独角兽企业重金招聘Python工程师标准>>> 作者:阿里聚安全 链接:https://zhuanlan.zhihu.com/p/24624347 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 国外 1、bWAPP 免费和…

cookielib和urllib2模块相结合模拟网站登录

1.cookielib模块cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。例如可以利用本模块的CookieJar类的对象来捕获cookie并在后续连接请求时重新发送。coiokielib模块用到的对象主要有下面几个:CookieJa…