【问题标题】:Scope of a feature activated Custom Sharepoint-Timer Job功能激活的自定义 Sharepoint-Timer 作业的范围
【发布时间】:2010-08-03 11:38:53
【问题描述】:

所以我正在使用 SPJobDefinition 为共享点开发自定义计时器作业。

此作业通过特征接收器激活。

据我了解,SPJobDefinition 在网络应用程序上运行。

如果功能范围是基于站点或基于 Web 的,是否有任何代码方式来确定在客户作业中通过哪个站点激活该功能?

为了更清楚地了解我想要实现的目标,作业本身是一个自定义的“提醒我”通知作业。我想做的是能够确定哪些站点已经激活了这个功能,从而确定哪些站点可以订阅警报通知。

但我不知道如何确定哪些网站启用了此功能。

非常感谢任何帮助。

【问题讨论】:

    标签: c# sharepoint sharepoint-2007


    【解决方案1】:

    下面是我用来做你所描述的代码:

        public override void Execute(Guid targetInstanceId)
        {
            foreach (SPSite site in this.WebApplication.Sites)
            {
                try
                {
                    if (SPSite.Exists(new Uri(site.Url)) && null != site.Features[FeatureId.AlertMeJob])
                    {
                        try
                        {
                            ExecuteJob(site);
                        }
                        catch (Exception ex)
                        {
                            // handle exception
                        }
                    }
                }
                finally
                {
                    site.Dispose();
                }
            }
        }
    

    FeatureId.AlertMeJob 是一个 GUID,表示具有创建作业计划的功能接收器的功能(如果它不存在)。

    【讨论】:

    • 这看起来很棒 - 非常感谢!但是有一个问题 - 是否有一种从自定义作业中获取功能 ID 的简单方法?还是我必须将 id 保存在某处,然后读入?
    • nvm... 我最终把它扔到了计时器作业的构造函数中,然后保存在 web.xml 中。财产袋......我知道这不是一种特别干净的方式......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    相关资源
    最近更新 更多