我正在开发一个小应用程序来在 SharePoint 中运行一些计时器作业。我不只是使用 aforeach
来遍历所有作业并选择我想要的作业,而是尝试通过 Linq 语句通过 Guid 选择它们。但是,我运气不佳。这是我到目前为止所拥有的:
foreach (SPService service in centralAdmin.Farm.Services)
{
var traceJob =
from jobDefinition in service.JobDefinitions
where jobDefinition.Id == traceGuid
select jobDefinition;
SPJobDefinition jobInfo = traceJob as SPJobDefinition
Console.WriteLine(jobInfo.DisplayName);
}
编辑我收到的错误是“NullReferenceException”Console.WriteLine(jobInfo.DisplayName)
我确信我错过了一些东西,因为这是我第一次使用 LINQ 语句,但我无法弄清楚我做错了什么。我将 traceJob 转换为因为SPJobDefinition
否则我无法访问. 任何提示或指示将不胜感激!SPJobDefinition
traceJob
编辑 枚举在搜索 Guid 时不会产生任何结果。但是,如果我执行以下代码:
foreach (SPJobDefinition jobDefinition in service.JobDefinitions)
{
if (jobDefinition.Id == traceGuid)
{
jobDefinition.RunNow();
Console.WriteLine(jobDefinition.DisplayName);
}
}
它将完全恢复我期望看到的内容——作业定义的显示名称。这似乎表明问题不在于有缺陷的 Guid 或不存在的作业。