我讨厌SharePoint。
我正在尝试通过功能安装SharePoint计时器。 我的功能是作为Web的范围(当我尝试部署时,确定WebApplication的范围会给我一个Access Denied错误。)
我在计时器类中的2个构造函数:
public CheckListForOldItems() : base()
{
}
public CheckListForOldItems(SPWebApplication webApp) :
base(JOB_NAME, webApp, null, SPJobLockType.Job)
{
Title = "Check list for items which have not been modified recently.";
}
在FeatureActivated事件的事件接收器中我有
public override void FeatureActivated(SPFeatureReceiverProperties properties)
{
SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
CheckListForOldItems simpleJob = new CheckListForOldItems(webApp);
SPMinuteSchedule schedule = new SPMinuteSchedule();
schedule.BeginSecond = 0;
schedule.EndSecond = 59;
schedule.Interval = 1;
simpleJob.Schedule = schedule;
simpleJob.Update();
}
项目设置为无活动部署。
在SP中,当我激活该功能时,我收到错误消息“发生意外错误。相关ID:bd1d16f6-e7c9-46c6-9a06-9103bd37858f
如果我取消注释FeatureActivated中的所有代码行,除了第一行代码,它会在没有错误的情况下激活,因此它会在类声明行中消失。
我做错了什么?
答案 0 :(得分:0)
您的功能是Web的范围。但是在您的代码中,您尝试将SPWeb对象(即properties.Feature.Parent)转换为SPWebApplication,这是错误的。 Web Scoped功能的下面行是错误的:
SPWebApplication webApp = properties.Feature.Parent as SPWebApplication;
您可以将范围更改为Web应用程序(理想方式)或将代码更改为:
SPWeb web=properties.Feature.Parent as SPWeb;
CheckListForOldItems simpleJob = new CheckListForOldItems(web.Site.WebApplication);
答案 1 :(得分:0)
应始终在Web应用程序级别安装计时器作业!否则,您必然会收到拒绝访问的消息。
放置您的功能接收器代码以在WebApplication范围功能中安装Timer Job,它将起作用。