Ошибка шага "Активировать функцию": ссылка на объект не установлена для экземпляра объекта
Я создал пользовательское задание таймера и реализовал его через событие функции в 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 ответа
Решение
Проблема была в объеме функции. Он был настроен на веб, и для активации функции на этом уровне вам нужна учетная запись администратора или учетная запись с повышенными привилегиями.
Вы можете добавить идентификатор пула приложений в учетные записи администратора фермы или запустить код с повышенными правами.
Исходя из вашего приемника функций, я вижу только две возможности:
- Дважды проверьте, что атрибут Scope в feature.xml установлен на Site. Если он установлен на веб, вы получите
Object Reference not set
Исключение при попытке использовать вашsite
переменная. - Как сказал Янис, загляните внутрь
MyCustomJob
конструктор. Убедитесь, что все переменные правильно инициализированы.