SharePoint功能事件接收器未触发

时间:2013-12-30 15:41:10

标签: sharepoint-2010

我想在我的sharepoint网站上添加一个自定义RoleDefinition,在VS2010中我添加了一个新的功能接收器,在Activated Event下我添加了这段代码:

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上的沙箱解决方案部署的。

任何想法?

非常感谢

2 个答案:

答案 0 :(得分:1)

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

HTH

答案 1 :(得分:0)

您创建了一些已部署在功能中的代码。但是你从来没有做过让代码运行的事情。我假设您有一个商业理由在功能中的代码中执行此操作,因为UI会让您执行此类操作。如果您想要在激活功能时执行某些功能,则您的代码实际上应位于功能接收器中。您可以将此代码添加到功能激活类的覆盖例程中。

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