Ошибка шага "Активировать функцию": ссылка на объект не установлена ​​для экземпляра объекта

Я создал пользовательское задание таймера и реализовал его через событие функции в sharepoint.

когда я попытался активировать его, он показывает эту конкретную ошибку:

Object reference not set to an instance of an object.   at TimerJobExample.MyFeatureReceiver.FeatureActivated(SPFeatureReceiverProperties properties) in C:\Documents and Settings\admin-shuklag.INFRADEV\My Documents\Visual Studio 2008\Projects\TimerJobExample\TimerJobExample\MyFeatureReceiver.cs:line 22 
   at Microsoft.SharePoint.SPFeature.DoActivationCallout(Boolean fActivate, Boolean fForce) 
   at Microsoft.SharePoint.SPFeature.Activate(SPSite siteParent, SPWeb webParent, SPFeaturePropertyCollection props, Boolean fForce) 
   at Microsoft.SharePoint.SPFeatureCollection.AddInternal(Guid featureId, SPFeaturePropertyCollection properties, Boolean force, Boolean fMarkOnly) 
   at Microsoft.SharePoint.SPFeatureCollection.Add(Guid featureId) 
   at Microsoft.SharePoint.WebControls.FeatureActivator.BtnActivateFeature_Click(Object objSender, EventArgs evtargs) 
   at System.Web.UI.WebControls.Button.OnClick(EventArgs e) 
   at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) 
   at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) 
   at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) 
   at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) 
   at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) 

Строка ошибки выделена ниже

public override void FeatureActivated(SPFeatureReceiverProperties properties)
    {

        SPSite site = properties.Feature.Parent as SPSite;

        // make sure the job isn't already registered


//error line
      **foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)**

        {

            if (job.Name == List_JOB_NAME)

                job.Delete();

        }



        SampleTimer listLoggerJob = new SampleTimer(List_JOB_NAME, site.WebApplication);

        SPMinuteSchedule schedule = new SPMinuteSchedule();

        schedule.BeginSecond = 0;

        schedule.EndSecond = 59;

        schedule.Interval = 5;

        listLoggerJob.Schedule = schedule;

        listLoggerJob.Update();

    }

В чем может быть проблема?

2 ответа

Решение

Проблема была в объеме функции. Он был настроен на веб, и для активации функции на этом уровне вам нужна учетная запись администратора или учетная запись с повышенными привилегиями.

Вы можете добавить идентификатор пула приложений в учетные записи администратора фермы или запустить код с повышенными правами.

Исходя из вашего приемника функций, я вижу только две возможности:

  1. Дважды проверьте, что атрибут Scope в feature.xml установлен на Site. Если он установлен на веб, вы получите Object Reference not set Исключение при попытке использовать ваш site переменная.
  2. Как сказал Янис, загляните внутрь MyCustomJob конструктор. Убедитесь, что все переменные правильно инициализированы.
Другие вопросы по тегам