2

I have the following error when activating a feature, this feature is supposed to install a timer job.

Failed to create receiver object from assembly "MundoNetElements, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9922d1e7c40d98f8", class "MundoNetElements.Features.NotificacionesContratosJob.NotificacionesContratosJobEventReceiver" for feature "MundoNetElements_NotificacionesContratosJob" (ID: 33578802-a775-4777-9317-518bcdaceb06).: System.ArgumentNullException: Value cannot be null.  Parameter name: type     at System.Activator.CreateInstance(Type type, Boolean nonPublic)     at Microsoft.SharePoint.Administration.SPFeatureDefinition.get_ReceiverObject()

This is my code,which doesnt have anything special and used several sample codes from other websites.

.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>

Event Receiver

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();
            }
        }
    }
}

And the timer job

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();

        }
    }
}
  • 1
    Try restarting the timer service. social.technet.microsoft.com/Forums/office/en-US/… – Akhoy Aug 20 '15 at 5:35
  • which scope does this feature have? – Gwny Aug 20 '15 at 7:13
  • Restarting de timer service does not work @uberz91 – Sebastián A Aug 20 '15 at 12:58
  • @Gwny the scope is WebApplication – Sebastián A Aug 20 '15 at 13:00
  • is it possible for you to debug with visualstudio while activating the feature? – Gwny Aug 21 '15 at 8:33
4

I guess your mistake is that SPSite is not the properties.Feature.Parent when your Feature has Scope Webapplication. Try this instead:

SPWebApplication webApp = (SPWebApplication)properties.Feature.Parent;
foreach (SPJobDefinition job in webApp.JobDefinitions){
           if (job.Name == List_JOB_NAME)
                   job.Delete();
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.