sharepoint 事件接收器ed方法获取HttpContext

前两天在做sharepoint 列表评分开发时候遇到一个小问题:

SharePoint服务器端对象模型中的SocialRatingManager类可以用来进行评分相关的操作,但创建这个类的实例需要HttpContext对象,而ItemUpdated Event无法获取到HttpContext,因为此时用户访问已经结束

The HttpContext.Current is only available within the constructor of your event receiver when handling synchronous events like ItemAdding, ItemUpdating.

这时候我们该如何做呢?于是乎很多人提出了解决办法:

  1. 尝试使用ItemUpdating Event,在构造方法中把HttpContext.Current传递给字段,然后在事件响应方法中使用。
  2. 仍使用ItemUpdated Event,想办法构造HttpContext,下面两个链接分别在SharePoint 2010、2013中使用了相同的方法构造HttpContext

http://www.sharepointpals.com/post/Programmatically-Manage-List-Items-Rating-with-Social-Rating-Manager-in-SharePoint-2013

https://pholpar.wordpress.com/2011/02/16/how-we-can-set-rating-in-the-name-of-other-users-from-code/

  3. 完全模仿第一个链接的做法,开发一个自定义WCF部署在SharePoint中,SharePoint相关应用程序的方法调用它,在自定义WCF中完成评分

我试了一下第一种方法可行,

步骤一,设置ed事件为同步事件

步骤二,在ing方法中获取HttpContext,用静态变量存起来

 

这样就可以拿到HttpContext

 

如果博友想到更好的办法,发出来共勉

 

posted on 2016-04-29 11:21  Marsboy  阅读(424)  评论(0编辑  收藏  举报

导航