SharePoint 2013 app 实战之 RemoteEventReceiver

本文介绍如何在SharePoint2013应用中利用RemoteEventReceiver特性拦截和处理列表项的添加、更新及删除操作,并通过示例代码展示了如何阻止列表项的删除。

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();

 

 

        

打开链接下载源码: https://pan.quark.cn/s/a4b39357ea24 HFSS,其全称为High Frequency Structure Simulator,是由Ansys公司研发的一款高级三维电磁场仿真软件,主要应用于射频、微波以及光学领域内的设计工作与性能分析。当前压缩包内提供的是一个基于HFSS软件构建的偶极子天线模型,并且包含了该模型的仿真数据,我们将对这一模型及其关联的学术知识进行细致的探讨。偶极子天线属于天线设计中最基础的类型之一,其结构由两个大小相等且布局对称的导体单元构成,整体形状类似于汉字“工”。在2.4GHz的频率条件下,此类天线被广泛部署于Wi-Fi、蓝牙等无线通信系统的构建中。HFSS软件能够对偶极子天线的电气特性进行高精度模拟,涵盖辐射模式、增益水平、方向图形态、输入阻抗以及S参数等多个核心指标。 S参数(即Scattering Parameters),是用于评估天线或微波器件输入端与输出端之间相互影响程度的关键参数。S参数详细刻画了信号流经网络设备时的反射与传输状态,其中S11(输入反射系数)和S21(传输系数)是最为常用的两种表征方式。借助HFSS软件执行S参数仿真,可以获取天线在多种频率下的反射与传输特性表现,从而协助设计人员对天线的阻抗匹配程度和运行效率进行有效评估。在此模型中,S参数仿真工作业已完成,因此我们可以直接审视2.4GHz频率下的阻抗匹配状况,以验证天线在该工作频段内能否展现出理想的性能。 在"Project1_1.aedt"与"Project1.aedt"这两个提供的文件中,储存了HFSS项目的完整信息。这些文件内含了天线的几何构造细节、材料物理属性、边界约束条件、求解器配置参数以及仿真获取的结果...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值