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

Я создал собственное задание таймера и реализовал его через событие функции в 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();

    }

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


person Thomas Mathew    schedule 16.09.2011    source источник
comment
Можете ли вы опубликовать код метода FeatureActivated?   -  person Marek Grzenkowicz    schedule 16.09.2011
comment
Что происходит в конструкторе MyCustomJob?   -  person Janis Veinbergs    schedule 19.09.2011


Ответы (2)


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

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

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

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

person Thomas Mathew    schedule 26.09.2011