通过命令行禁用功能,而不是触发SPFeature事件接收器

时间:2011-05-05 12:14:49

标签: sharepoint sharepoint-2010 stsadm event-receiver sharepoint-feature

我正在通过stsadm工具停用某项功能。我为此操作启用了事件接收器。如果我从站点手动停用该功能,则会触发事件,但在运行stsadm命令时则不会。

请帮忙......

以下是代码Sylvain:

public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
    {
        Logging.Log(_componentName, "The document library feature has deactivated successfully.");
    }

2 个答案:

答案 0 :(得分:2)

在事件接收器的代码中,您使用SPContext.Current(或其他Web上下文对象)......? 如果是这样,您的代码在网站上工作,但不在Web上下文(如stsadm或命令行)之外,因为SPContext.Current为null。

检查这一点,但很有可能是问题所在。

答案 1 :(得分:0)

正如Sylvain Reverdy指出的那样,你的功能接收器更难以失败,而不是被称为。查看SharePoint日志 - 跟踪所有功能激活/停用/安装步骤(位置 - c:\ Program Files \ Common Files \ Microsoft Shared \ web服务器扩展\ 14 \ LOGS,请参阅Where is the default log location for SharePoint/MOSS?)。

确保您没有使用StsAdm命令的“-force”选项 - 它使stsadm在停用期间忽略失败。