安装计时器作业时出现意外异常-未能从程序集创建接收器对象



我在激活一个功能时有以下错误,这个功能应该安装一个计时器作业

从程序集"MundoNetElements"创建接收对象失败。版本=1.0.0.0,文化=中性,PublicKeyToken=9922d1e7c40d98f8",类"MundoNetElements.Features.NotificacionesContratosJob.NotificacionesContratosJobEventReceiver"对于"MundoNetElements_NotificacionesContratosJob"(ID:33578802 - a775 - 4777 - 9317 - 518 - bcdaceb06)。:系统。ArgumentNullException:值不能为空。参数名称:类型atSystem.Activator。CreateInstance(Type Type, Boolean nonPublic)Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject ()

这是我的代码,没有什么特别的,并使用了其他网站的几个示例代码。

feature

<?xml version="1.0" encoding="utf-8"?>
<feature xmlns:dm0="http://schemas.microsoft.com/VisualStudio/2008/DslTools/Core" dslVersion="1.0.0.0" Id="e67975ff-4d4f-4f6a-9349-e46cc0398745" alwaysForceInstall="true" description="This job executes periodically the notification process and the cleaning for the Mundo Net application" featureId="e67975ff-4d4f-4f6a-9349-e46cc0398745" imageUrl="" receiverAssembly="$SharePoint.Project.AssemblyFullName$" receiverClass="$SharePoint.Type.5de345c1-6a4c-48d8-8a8f-f80c531b438a.FullName$" scope="Site" solutionId="00000000-0000-0000-0000-000000000000" title="MundoNetJob" version="" deploymentPath="$SharePoint.Project.FileNameWithoutExtension$_$SharePoint.Feature.FileNameWithoutExtension$" xmlns="http://schemas.microsoft.com/VisualStudio/2008/SharePointTools/FeatureModel" />

template.xml

<?xml version="1.0" encoding="utf-8" ?>
<Feature xmlns="http://schemas.microsoft.com/sharepoint/">
</Feature>
事件接收者

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Security;
namespace MundoNetElements.Features.MundoNetJob
{
    /// <summary>
    /// Esta clase controla los eventos generados durante la activación, desactivación, instalación, desinstalación y actualización de características.
    /// </summary>
    /// <remarks>
    /// El GUID asociado a esta clase se puede usar durante el empaquetado y no se debe modificar.
    /// </remarks>
    [Guid("5de345c1-6a4c-48d8-8a8f-f80c531b438a")]
    public class MundoNetJobEventReceiver : SPFeatureReceiver
    {
        const string List_JOB_NAME = "MundoNetJob";
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            SPSite site = properties.Feature.Parent as SPSite;
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                if (job.Name == List_JOB_NAME)
                    job.Delete();
            }
            // install the job
            MundoNetElements.MundoNetJob listLoggerJob = new MundoNetElements.MundoNetJob(List_JOB_NAME, site.WebApplication);
            SPDailySchedule schedule = new SPDailySchedule();
            schedule.BeginHour = 23;
            schedule.BeginMinute = 0;
            schedule.BeginSecond = 0;                        
            schedule.EndHour = 23;
            schedule.EndMinute = 15;
            schedule.EndSecond = 0;
            listLoggerJob.Schedule = schedule;
            listLoggerJob.Update();
        }
        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            SPSite site = properties.Feature.Parent as SPSite;
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
            {
                if (job.Name == List_JOB_NAME)
                    job.Delete();
            }
        }
    }
}

和定时器作业

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
namespace MundoNetElements
{
    public class MundoNetJob : SPJobDefinition
    {
        public MundoNetJob() : base()
        {
        }
        public MundoNetJob(string jobName, SPService service, SPServer server, SPJobLockType targetType) : base(jobName, service, server, targetType)
        {
        }
        public MundoNetJob(string jobName, SPWebApplication webApplication) : base(jobName, webApplication, null, SPJobLockType.ContentDatabase)
        { 
            this.Title = "Mundo Net job"; 
        }
        public override void Execute(Guid contentDbId)
        {
            // get a reference to the current site collection's content database
            //SPWebApplication webApplication = this.Parent as SPWebApplication;
            //SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId];
            //// get a reference to the "ListTimerJob" list in the RootWeb of the first site collection in the content database
            //SPList Listjob = contentDb.Sites[0].RootWeb.Lists["ListTimerJob"];
            //// create a new list Item, set the Title to the current day/time, and update the item
            //SPListItem newList = Listjob.Items.Add();
            //newList["Title"] = DateTime.Now.ToString();
            //newList.Update();
        }
    }
}

您是否重命名了名称空间?SharePoint试图在命名空间MundoNetElements.Features.NotificacionesContratosJob中创建一个对象。您包含的事件接收器具有名称空间MundoNetElements.Features.MundoNetJob

最新更新