[SharePoint2010] 在SharePoint2010中架设自己的Service层中遇到的问题

在SharePoint2010中,我们有很多中方法可以在客户端调用服务器段的API,直接获取数据,例如Silverlight,我可以用如下代码获取我需要的List中的数据.

public override void GetListItemsAsync(string listName, string viewXML, out ListItemCollection listItems)
      {
          clientContext.Load(clientContext.Web);
          List targetList = clientContext.Web.Lists.GetByTitle(listName);
          clientContext.Load(targetList);
          CamlQuery camlQuery = new CamlQuery();
          camlQuery.ViewXml = viewXML;
          listItems = targetList.GetItems(camlQuery);
          clientContext.Load(listItems);
          clientContext.ExecuteQueryAsync(successEventHandler, failEventHandler);
      }

如果用js也是如此,但是需要注意的是,这些方式获取数据都是异步的,而有关List的操作,SharePoint2010提供给我们的又是有限的几个,当我需要向服务器提交复杂的操作时,比如用户认证并且获取多方数据,就不能一次又一次的向Server端通过异步的方式取数据了。最好的办法是架设自己的Service层,接受来着客户端的请求,统一处理完成,返回给客户端,一次交互完成所有相关工作。

正是基于这样的思考,我们开始在SharePoint2010上架设Service(以前在SharePoint2007的时候,没有提供那么多的数据访问方式,架设这种Service更是常规解决方案),在这里记录下遇到的问题以及相应的Solution

1.首先要完成Service后端的Busniess layer,我们创建了class library,添加了Microsoft.SharePoint.dll, 完成了所有设计到SharePoint object model的busniess,这里简称为BizLayer,然后我们在本地进行了unit test,注意在编译引用过Microsoft.SharePoint.dll的library时,要做如下设置:选择此class library的 project property,在Application结,将

Target Framework设为 .net frame work 3.5, 在Build结将Target Platform设为x64,因为SharePoint2010是基于x64 平台的,如果不这么设置的话,在跑本地unit test时,默认在X86下运行,如果代码中包含了SPSite site = new SPSite(XXX)之类的,会报错 :找不到当前的Web Application…

2. 到目前位置,一切看起来进展的很顺利,我们又创建了WebService(基于ASMX或者WCF)项目,添加了刚才测试过的Busniess layer的library,然后完成了Service Contact的实现,很简单,只有调用几个Busniess Layer实现的接口就可以了。当我们现在VS2010上调试我们的WebService时,出错了:

Could not load file or assembly 'XXXXXX' or one of its dependencies. An attempt was made to load a program with an incorrect format.

我们意识到可能是我们刚才把BizLayer的Target Platform设为x64的缘故,貌似VS2010起的调试进程只是基于X86的,无法loadX64build的程序。这点和SharePoint2007不一样了,查阅了资料以后,我们决定直接用IIS作为载体来Deploy web service:

首先,我们把BizLayer的Target Platform设为Any Cpu,把Web Service的Target Platform也设为Any Cpu,然后在64位IIS7.5下创建新的Web Site,在Authentication中enable Windows Authentication,在相应的App pool中点击Set Application Pool Default,将Identity这一栏设为一个对SharePoint2010有读写权限的帐号(如果你愿意的话,可以根据你的Service的实现,给相应的权限)。完成这些后,在IE中输入我们在IIS中的地址,web service就可以访问了,不报错了。

这里记录了一次部署SharePoint2010 customization service的过程,可以发现由于SharePoint2010是基于64位系统平台的,和SharePoint2007还是有很大不同的。

转载于:https://www.cnblogs.com/tonnie/archive/2011/04/01/ws.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值