Ошибка шага «Активировать функцию»: ссылка на объект не установлена ​​для экземпляра объекта - PullRequest
1 голос
/ 16 сентября 2011

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

5 голосов
/ 19 сентября 2011

В зависимости от вашего приемника объектов, я вижу только две возможности:

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

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

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

...