0

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

请帮助...

下面是代码维尔托德:

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

它使用powershell时执行吗? – Shaneo 2011-05-05 13:07:21

+0

是的,我尝试过使用powershell,结果相同... – Shankar 2011-05-05 13:12:38

回答

2

在你的事件接收器的代码,你使用SPContext.Current(或其他网络上下文对象).. 。? 如果是这样,您的代码在网站上工作,但不能超出web上下文(如stsadm或命令行),因为SPContext.Current为空。

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

+0

我们只使用了文件记录功能,没有使用任何SP功能 – Shankar 2011-05-06 05:07:58

0

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

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

+0

我正在使用强制命令... stsadm -o deactivatefeature -filename folder/feature.xml -url http:// server-name/-force ...我会尝试追踪错误 – Shankar 2011-05-06 05:18:42