前两天在做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.
这时候我们该如何做呢?于是乎很多人提出了解决办法:
- 尝试使用ItemUpdating Event,在构造方法中把HttpContext.Current传递给字段,然后在事件响应方法中使用。
- 仍使用ItemUpdated Event,想办法构造HttpContext,下面两个链接分别在SharePoint 2010、2013中使用了相同的方法构造HttpContext
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
如果博友想到更好的办法,发出来共勉
时间: 2024-10-14 05:37:15