【问题标题】:SharePoint feature event receiver not firingSharePoint 功能事件接收器未触发
【发布时间】:2014-01-02 17:59:51
【问题描述】:

我想将自定义 RoleDefinition 添加到我的共享点站点,在 VS2010 中我添加了一个新功能接收器,并在激活事件下添加了以下代码:

using (SPSite site = new SPSite("http://localhost:8280"))
            {
                using (SPWeb web = site.OpenWeb())
                {
                    web.RoleDefinitions.Add(AdminRole);
                    web.Close();
                 }
                site.Close();

            }

我使用包设计器添加了该功能,并从 VS 将解决方案部署到“Web”范围。当我转到站点功能时,我确实看到我的功能处于活动状态,但角色定义不存在。我怀疑没有触发事件接收器代码,所以我添加了一些写入日志文件的代码,并且该文件为空,因此永远无法访问代码。知道该解决方案已部署为 SharePoint 2010 上的沙盒解决方案。

有什么想法吗?

非常感谢

【问题讨论】:

  • 你是如何部署功能的?使用视觉工作室?您是否尝试过再次停用和激活功能?
  • 是的,我尝试过多次激活和停用,代码无法访问
  • 部署后是否进行了iisreset?可能是缓存问题。还尝试使用归档程序打开 wsp 包并检查功能 xml 声明文件。可能存在不正确的程序集名称或命名空间。
  • 试了都不行

标签: sharepoint-2010


【解决方案1】:

事件接收器没有触发,因为它没有链接到该功能......doh! 事情是这样的,在特征模板文件中必须添加这两个属性: ReceiverAssembly="全名、版本、中立、publikeytoken" ReceiverClass="*Namesapace.classname"

【讨论】:

    【解决方案2】:

    您创建了一些部署在功能中的代码。但是您永远不会做任何事情来使该代码运行。我假设您有商业理由在功能的代码中执行此操作,因为 UI 会让您执行此类操作。如果您想要在激活功能时执行代码,那么您的代码实际上应该在功能接收器中。您可以将此代码添加到功能激活类的覆盖例程中。

    搜索功能接收器以获取详细说明。

    【讨论】:

    • 事件接收器附加到一个功能,所以我不太明白你的评论
    猜你喜欢
    • 2012-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    相关资源
    最近更新 更多