SharePoint 2013 app 实战之 RemoteEventReceiver
来源:互联网 发布:网络媒体广告投放 编辑:程序博客网 时间:2024/05/21 10:15
RemoteEventReceiver 是在SharePoint 2013 app中引入的一个新特性,它可以在SharePoint 内容触发某个事件(删除item,添加item,修改 item等)时调用一个远程的WCF 服务,在这个远程的WCF服务 的 publicSPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties) 方法中你可以对这个事件做进一步处理,最终返回一个 SPRemoteEventResult来标示是否继续改事件(比如可以返回 result.Status =SPRemoteEventServiceStatus.CancelWithError; 来终止事件)。
本文新建app的过程略过,不会的博友请参考:http://blog.csdn.net/farawayplace613/article/details/8677596。
下面说明下步骤:
1. 新建 RemoteEventReceiver
a. 选中SharePoint app project, 右击 => New Item, 选择 RemoteEventReceiver,点击 Add
b. 类型选择"List Item Events", 事件源选择 "Custom List",处理事件选择"An Item is being added","An Item is being deleted","An Item is being updated", 点击Finish
c. 完成后在SharePoint App web project中会多出一个 RemoteEventReceiver1.svc
2. 在SharePoint app project中添加一个List instance 用于测试
3. 更新RemoteEventReceiver1.svc.cs中的代码(若遇到delete item则,报错并终止删除事件)
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.SharePoint.Client;using Microsoft.SharePoint.Client.EventReceivers;namespace SharePointApp9Web{ public class RemoteEventReceiver1 : IRemoteEventService { public SPRemoteEventResult ProcessEvent(SPRemoteEventProperties properties) { SPRemoteEventResult result = new SPRemoteEventResult(); using (ClientContext clientContext = TokenHelper.CreateRemoteEventReceiverClientContext(properties)) { if (clientContext != null) { clientContext.Load(clientContext.Web); clientContext.ExecuteQuery(); } } if (properties.EventType == SPRemoteEventType.ItemDeleting) { result.ErrorMessage = "You can't delete!"; result.Status = SPRemoteEventServiceStatus.CancelWithError; } return result; } public void ProcessOneWayEvent(SPRemoteEventProperties properties) { } }}
4. 调试 RemoteEventReceiver
a.点击VS2012的start
b. 选择trust 该app
c. 打开 http://YourSharePointServer/YourAppName/Lists/List1 (注意替换YourSharePointServer,YourAppName)
d. 添加一个 item
e. 在ProcessEvent 方法中设置若干断点
f. 尝试删除一个Item
5. 当尝试删除一个Item时效果为:
6. 为App web之外的list 注册 RemoteEventReceiver
注意,用以上方法添加的RemoteEventReceiver只能作用于App web 中的list(内容),如果要给App web之外的list(如Host web 中的list) 注册 RemoteEventReceiver就需要使用如下Client Ojbet代码:
// need add name space using System.Reflection;EventReceiverDefinitionCreationInformation eventReceiver = new EventReceiverDefinitionCreationInformation(); eventReceiver.EventType = EventReceiverType.ItemAdding; eventReceiver.ReceiverAssembly = Assembly.GetExecutingAssembly().FullName; eventReceiver.ReceiverClass = "HTools_EventReceiver"; eventReceiver.ReceiverName = "HTools_EventReceiver"; eventReceiver.ReceiverUrl = "http://hh-wks-robb:2145/HTools_EventReceiver.svc"; eventReceiver.SequenceNumber = 1000; Web web = SPutil.getSP("http://sub.domain.com/sites/apps"); List targetList = web.Lists.GetByTitle("Host Web List"); targetList.EventReceivers.Add(eventReceiver); web.Context.ExecuteQuery();
常见问题:
a. 如果不能触发RemoteEventReceiver,请尝试为Host web 开启SSL : http://blogs.msdn.com/b/fabdulwahab/archive/2013/01/21/configure-ssl-for-sharepoint-2013.aspx
b. 如果遇到"Could not establish trust relationship with remote server",请于请求代码前加上:
TokenHelper.TrustAllCertificates();
- SharePoint 2013 app 实战之 RemoteEventReceiver
- SharePoint 2013 app ---SharePoint hosted 实战(1)
- SharePoint 2013 app ---Provider Hosted app实战
- SharePoint 2013 app ---SharePoint hosted app 实战(2)
- SharePoint 2013 App 示例之图片墙
- SharePoint 2013 App Certificate
- SharePoint 2013 App概述
- SharePoint 2013 App 开发 (1) - 什么是SharePoint App?
- SharePoint 2013 App 介绍1
- SharePoint 2013 App介绍2
- office 2013 app 之 task pane app(从新建到发布到office 365 SharePoint)
- office 2013 app 之 content app(从新建到发布到office 365 SharePoint)
- SharePoint 2013 开发——SharePoint APP介绍
- 《SharePoint 2013 应用开发实战》目录
- Office 365 - SharePoint 2013 Online之添加App开发工具Napa
- SharePoint 2013 搭建app本地开发环境
- SharePoint 2013 App Remote Event Receivers
- SharePoint 2013 App Development读书笔记1
- POJ2388《Who's in the Middle》方法:排序
- 一台机器同时运行两个Tomcat
- MongoDb学习文档
- c#默认按钮设置
- DM9000网卡介绍
- SharePoint 2013 app 实战之 RemoteEventReceiver
- Eclipse添加DTD文件实现xml的自动提示功能
- Hadoop FS Shell命令
- .fancybox 用法
- Invalid result location value/parameter 解决办法
- C库函数手册
- 第三次作业
- javascript动态添加、修改、删除对象的属性和方法
- SQL Profiler的使用教程