2015-08-19 3 views
2

У меня есть следующая ошибка при активации функции, эта функция должна установить задание таймера.Неожиданное исключение при установке задания таймера - Не удалось создать объект-приемник из сборки

Не удалось создать объект приемника из сборки "MundoNetElements, Version = 1.0.0.0, культура = нейтральной, PublicKeyToken = 9922d1e7c40d98f8", класс "MundoNetElements.Features.NotificacionesContratosJob.NotificacionesContratosJobEventReceiver" для функции "MundoNetElements_NotificacionesContratosJob" (ID: 33578802-a775-4777-9317-518bcdaceb06) .: System.ArgumentNullException: Значение не может быть пустым. Имя параметра: тип на System.Activator.CreateInstance (типа Type, Boolean непубличных) в 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> 

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

И задание таймера

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

     } 
    } 
} 

ответ

0

Вы переименовали свое пространство имен? SharePoint пытается создать объект в пространстве имен MundoNetElements.Features.NotificacionesContratosJob. Получатель событий, который вы включили, имеет пространство имен MundoNetElements.Features.MundoNetJob

Надеюсь, это поможет.

Смежные вопросы