激活SharePoint功能时发生意外错误

时间:2014-03-20 10:31:17

标签: sharepoint sharepoint-2010

我讨厌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中的所有代码行,除了第一行代码,它会在没有错误的情况下激活,因此它会在类声明行中消失。

我做错了什么?

2 个答案:

答案 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,它将起作用。