SharePoint 2013 调用WCF服务简单示例
内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助。好吧,进入正题!
第一部分 SharePoint 2013调用自带WCF服务
1、在创建好的测试项目中(控制台程序),在引用上右键添加服务引用,如下图:

2、填写WCF的服务地址和命名空间,完毕后点击转到,如果服务没有开匿名,可能需要输入用户名和密码,如下图:

3、点击转到并输入用户名密码,稍等片刻,即可找到WCF服务,然后点击确定即可将服务添加到引用,如下图:

4、添加调用WCF服务的代码,这里代码很简单,就是获取List中的数据:
public static void GetListDate()
{
//创建WCF服务
Uri url = new Uri("http://serverurl/_vti_bin/ListData.svc");
ListDataService.开发人员网站DataContext datacontent = new ListDataService.开发人员网站DataContext(url);
//给WCF服务授权
NetworkCredential nc = new NetworkCredential("username", "password", "domain");
datacontent.Credentials = nc;
//获取数据,AppInstallLogs为列表
var itemcoll = datacontent.AppInstallLogs;
foreach (var item in itemcoll)
{
Console.WriteLine("ID:{0} - 标题:{1}", item.Id, item.标题);
}
}
5、测试结果,如下图:

以上就是SharePoint 2013 WCF的简单调用,本文只是一个调用的例子,没有更加深入的讲解。
第二部分 SharePoint 2013调用自定义WCF服务
下面,介绍自定义WCF的简单调用,其实代码都比较简单,只是授权的时候,有点纠结,自己搞了一下午,才发现问题,现在趁着有空,拿出来跟大家分享。添加引用的地方,和引用SharePoint自带的WCF服务是一样的步骤,这里就不多说了,直接调用了。
6、如下图,可以看到我们的服务,还有服务里面包含的操作

7、调用WCF的方法,微软上的说明是先设置代理,然后设置为NTLM,再调用WCF服务,给WCF服务授权,即可调用SharePoint自定义的WCF;
public static void GetWebTitle()
{
//设置代理
BasicHttpBinding myBinding = new BasicHttpBinding();
myBinding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
EndpointAddress ea = new EndpointAddress(http://serverurl/_vti_bin/GetWebTitle/GetWebTitle.svc);
//WCF服务的方法调用
GetWebTitleService.GetWebTitleClient up = new GetWebTitleService.GetWebTitleClient(myBinding, ea);
up.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
//和注释的两种授权方式,都可以
NetworkCredential nc = new NetworkCredential("username", "password", "domain");
up.ClientCredentials.Windows.ClientCredential = nc;
//up.ClientCredentials.Windows.ClientCredential.UserName = "domain\\username ";
//up.ClientCredentials.Windows.ClientCredential.Password = "password";
Console.WriteLine("WCF调用结果:" + up.GetSPWebTitle("http://weburl", ""));
}
8、执行程序,查看调用结果,调用成功获取到了站点的名称!

特:这个WCF服务是上一篇博客中定义的,有兴趣查看的请参考附后的链接,谢谢!
9、特别想说的是,如果不设置代理会报如下错误,解决了一下午才发现问题所在;

画外音
看到如上图的401错误,自己就想到是WCF服务的认证出了问题,因为之前调用WebService的时候,都是通过授权调用的,很奇怪这个没有授权方式;
后来,经过不断的找资料,发现了授权的两种方式(上面代码使用的和注释掉的),但是依然401错误,后来发现需要设置代理,具体原理自己也不十分清楚,如果有非常了解WCF的看到,希望可以给我留言,如果以后我发现了原理,也会及时补充过来!
总 结
本文只是简单介绍WCF的调用过程,内容比较简单,算是对之前遇到问题的一个简单总结,也希望能够给需要使用的人以帮助。
附 录
SharePoint 2013 中自定义WCF服务
http://www.cnblogs.com/jianyus/p/3586004.html
SharePoint 2013 调用WCF服务简单示例的更多相关文章
- Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务、WCF消息头添加安全验证Token
原文:Prism for WPF 搭建一个简单的模块化开发框架(四)异步调用WCF服务.WCF消息头添加安全验证Token 为什么选择wcf? 因为好像wcf和wpf就是哥俩,,, 为什么选择异步 ...
- 实现在GET请求下调用WCF服务时传递对象(复合类型)参数
WCF实现RESETFUL架构很容易,说白了,就是使WCF能够响应HTTP请求并返回所需的资源,如果有人不知道如何实现WCF支持HTTP请求的,可参见我之前的文章<实现jquery.ajax及原 ...
- Post方式调用wcf服务
我们平常在PC端调用WCF服务,只要知道WCF服务的地址,客户端直接添加引用服务就可以使用了,殊不知还有其他方式,其实,我们也可以 通过HTTP POST的方式调用WCF服务,这样就不用添加引用了,在 ...
- 完全使用接口方式调用WCF 服务
客户端调用WCF服务可以通过添加服务引用的方式添加,这种方式使用起来比较简单,适合小项目使用.服务端与服务端的耦合较深,而且添加服务引用的方式生成一大堆臃肿的文件.本例探讨一种使用接口的方式使用WCF ...
- 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法
关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...
- 实现jquery.ajax及原生的XMLHttpRequest调用WCF服务的方法
废话不多说,直接讲解实现步骤 一.首先我们需定义支持WEB HTTP方法调用的WCF服务契约及实现服务契约类(重点关注各attribute),代码如下: //IAddService.cs namesp ...
- .NET Core 调用WCF 服务
.NET Core 和ASP.NET Core 已经可以调用WCF 服务. 环境要求: VS2015 Update 2 +VS2015 Tooling + .NET Core SDK 下载地址: ht ...
- [转]学习 WCF (6)--学习调用WCF服务的各种方法
转自:http://www.cnblogs.com/gaoweipeng/archive/2009/07/26/1528263.html 作者这篇博文写得很全面. 根据不同的情况,我们可以用不同的方法 ...
- Silverlight客户端调用WCF服务难题解疑
一:解决办法 Silverlight客户端调用WCF服务在实际使用中经常会出现的问题就是无法直接应用类文件和配置文件.微软针对这一情况已经给出了解决办法.WCF开发框架可以帮助我们实现可靠性较高的跨平 ...
随机推荐
- [原]零基础学习视频解码之seek
现在,我们要添加一些功能,当你看不能倒带的电影,是不是很烦? 那么函数av_seek_frame功能看起来是多么赏心悦目. 我们将让左,右箭头来回走在影片中通过一个小的向上和向下箭头很多,其中“三多一 ...
- ruby include和exclude区别
很久没玩ruby了,今天看源码的时候,看到extend硬是缓不过神了,Google下extend和include的区别,做个记录 在class中include module, 那么module中的方法 ...
- Struts2知多少(2) Struts2 是什么
Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架. Struts2不只是Struts1下一个版本,它是一个完全重写的Struts架构. WebWork框架开始以Struts框架为基础 ...
- client/scroll/offset width/height/top/left ---记第一篇博客
client/scroll/offset width/height/top/left (盒模型为contentBox,定位原点是元素左上角边框最外层的交点) clientWidth width+左p ...
- Linux文件查找工具之find “大宝剑”--转载
原文地址:http://xinzong.blog.51cto.com/10018904/1749465 一.文件查找工具常用软件 locate: locate命令其实是find -name的另一种写法 ...
- tar exclue文件夹
tar zcvf logs.tar.gz logs --exclude=logs/log1
- 【推荐】oc解析HTML数据的类库(爬取网页数据)
TFhpple是一个用于解析html数据的第三方库,本人感觉功能还算可以,只不过在使用前必须配置项目. 配置 1.导入libxml2.tbd 2.设置编译路径 使用 这里使用一个例子来说明 http: ...
- EFcodeFirst+T4=操纵任意数据库
之前有写过两篇,EF选择Mysql数据源 跟 EF添加ADO.NET实体模型处直接选择Oracle数据源,其方便之处就不多说了,使用DBfirst直接点点点就能与数据库双向更新,而且关键是方便我们使用 ...
- Github教程(1)
Git基本命令 git diff:查看工作树,暂存区,最新提交之间的差别 举例: 在README.MD中增加一行 ## This is the subtitle 执行git diff 命令,查看当前工 ...
- sns社区架构设计案例分享(二)
源码下载地址:http://www.jinhusns.com/Products/Download/?type=xcj 五. 架构使用说明 > 缓存 > 使用说明 > (一)基础类库介 ...