问题标签 [sharepoint-timer-job]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2447 浏览

c# - SharePoint 2010:如何从自定义计时器作业访问任何列表?

我正在用 C# 开发一个SharePoint 2010 计时器作业,它更新从 SQL 数据库中检索到的员工状态(无论他们当前是否有空或不在工作)信息,以便更新并存储在员工 SharePoint 列表中(所需的方法是能够访问我选择的任何列表,而不仅仅是一个指定/硬编码的列表)。我创建了一个 SharePoint 空项目,其唯一功能是使用我的事件接收器类在 FeatureActivated 和 FeatureDeactived 方法中使用自定义代码的计时器作业。计时器作业类的 Execute 方法使用 SqlClient 获取数据并将其存储到一个字典对象中,该字典对象的键值为员工 ID,值为状态。然后使用该字典检索员工 SharePoint 列表中的员工记录并更新状态。

我的问题是,无论我为计时器作业选择什么范围,我都无法访问我想要的任何 SharePoint 列表。我已经尝试使用 SPWeb 和 SPSite 对列表的 URL 进行硬编码,几乎任何东西。我已经检查了我的站点的站点集合,并且我有 2 个站点集合(“/”、“testsitecollection”),而第二个根本没有使用。

例如" SPWeb web = site.OpenWeb(); SPList list = web.Lists["Employees"];

抛出异常:“在http://www.mysite找不到列表“员工” ”

我想知道是否有人对此事有任何意见。在源代码方面,我遵循了网络上的许多示例,例如:http ://www.andrewconnell.com/blog/articles/CreatingCustomSharePointTimerJobs.aspx

我在 Web 上找到的所有示例,用于在前端站点上更新自定义计时器作业列表,例如任务列表。

感谢任何添加输入的人。

0 投票
1 回答
523 浏览

c# - GacInstall on Sharepoint Timer Job aka SPJobDefinition

目前,我正在尝试为我们的 Sharepoint 解决方案实施插件架构,管理员可以上传将由我们的解决方案安装和处理的 dll 文件。

实施需要GAC安装上传的dll,我已经使用

这只是将 dll 安装到 GAC 并在 Sharepoint 上下文中调用它时工作正常。但是,它不适用于多服务器环境,因为这只会将其安装在管理员上传文件的前端。因此,我通过继承将上面的代码移到了计时器作业中SPJobDefinition。GacInstall 不再将 dll 安装到 GAC。在调试模式下GacInstall,行工作正常,没有抛出任何异常,但也没有任何影响。

Network Service在计时器作业中返回。我在单服务器 Sharepoint 2010 Foundation 上工作,但我需要它在 2007/2010/2013 单服务器和多服务器环境中工作。

0 投票
2 回答
4507 浏览

sharepoint-2013 - 部署 Sharepoint 2013 计时器作业时出错:对象“proc_putObjectTVP”、数据库“MSSQL”、模式“dbo”的执行权限被拒绝

在功能激活时尝试创建自定义 SharePoint 计时器作业时,我从日志文件中收到以下错误:

System.Data.SqlClient.SqlException (0x80131904):对象“proc_putObjectTVP”、数据库“MSSQL”、模式“dbo”的执行权限被拒绝。 在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection,Action`1 wrapCloseInAction)在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj,布尔 callerHasConnectionLock,布尔 asyncClose)在 System.Data.SqlClient.TdsParser System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) 在 System.Data.SqlClient.Sql 的 .TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)。 .. 5c6d109c-dbc6-e02e-7ae4-010d7f559e0b

为了使它工作,我找到了存储过程 proc_putObjectTVP 并授予站点 apppool 用户 ID 的执行权限。它按预期工作。

我的问题是:

这是 Sharepoint 2013 中的错误吗?这是正确的方法吗?(在生产环境中,服务器管理员可能不允许我执行此类操作)

0 投票
1 回答
1342 浏览

workflow - SharePoint 计时器作业添加列表项,但不触发关联的工作流

我有一个名为“会话”的列表,该列表有一个工作流,用于创建、修改项目。当我使用 Web 部件以及手动添加项目时,工作流会触发。我开发了一个每天运行的计时器作业,它将项目添加到“会话”列表中。 当计时器作业将项目添加到列表时,工作流不会触发。

0 投票
2 回答
1925 浏览

sharepoint - SharePoint 自定义计时器作业执行问题

我们在 Visual Studio 2012 中为 SharePoint 2013 开发了一个计时器作业。它计划在早上 7 点到早上 7:15 之间运行。我们已经使用 PowerShell 部署了计时器作业。在代码中,我们PortalLog.LogString在计时器执行方法的开头添加了 SharePoint 错误日志中的日志消息。

在网站集下,我们可以看到它已部署并激活。计时器作业的范围设置为 VS 中的站点。我们可以看到部署在中央管理的审查作业定义中的计时器作业。但是,在预定的作业中看不到它。当我们通过查看作业定义来编辑计时器作业并点击“立即运行”时,我们在使用PortalLog.LogString.

可能是什么问题?

0 投票
1 回答
763 浏览

sharepoint-2010 - 自定义计时器作业在生产中不起作用

我在生产中有一个名为 Documents 的文档库。我编写了一个计时器作业,用于根据库中的列发送电子邮件。

在开发环境中一切都很好,但是 prod 中的计时器工作给了我例外。有任何想法吗?

作业定义 CorporatePolicyReminders.DailySchedule (ID 3586f4d2-1bc1-4770-b5b8-4c2c578ee8d5) 的 Execute 方法抛出异常。更多信息包括在下面。你调用的对象是空的。

异常堆栈跟踪:
在 CorporatePolicyReminders.CorporatePolicyReminders.SendCorporateReminder(SPWeb web)
at CorporatePolicyReminders.DailySchedule.Execute(Guid contentDbId)
at Microsoft.SharePoint.Administration.SPTimerJobInvokeInternal.Invoke(SPJobDefinition jd, Guid targetInstanceId, Boolean isTimerService, Int32& result)

离开监控范围(定时工作公司政策 - 提醒电子邮件)。执行时间=364.288198639771

SendCorporateReminers 方法

0 投票
1 回答
1110 浏览

sharepoint - 如何在隔天运行自定义 Sharepoint 计时器作业?

我必须在隔天使用自定义计时器作业执行一些操作吗? 下面创建和启动计时器作业(在功能接收器中)的代码,但它每天运行,我必须隔天运行它

怎么做?

private bool CreateJob(SPSite site) { bool jobCreated = false; 尝试 {

0 投票
1 回答
612 浏览

sharepoint-2010 - 无法以编程方式从 SPWeb 对象获取回收站项目当代码包装在计时器作业中时

我有一个计时器作业,我通过它以编程方式循环浏览网站集中的每个网站,并希望获得每个网站的回收站项目。下面是我的代码 -

公共覆盖无效执行(Guid targetInstanceId){ SPSecurity.RunWithElevatedPrivileges(委托 { SPFarm 农场 = SPFarm.Local;

}}}});}

但即使在网站回收站中有项目之后,我每次都在代码中为 SPWeb.RecycleBin.Count 获得计数 0,而我能够获得带有项目的站点集合 RB SPWeb.Site.RecycleBin。有人知道吗,我的要求是从网站 coll 中的每个网站分别获取项目。任何帮助深表感谢 !!

另外,补充一下,我在事件接收器中尝试了相同的代码,它有效!是定时器工作的限制还是我的代码中的问题

0 投票
1 回答
1923 浏览

c# - SharePoint 计时器作业正在运行但未执行

此功能的范围是网站集级别。激活该功能后,将在 Web 应用程序中创建计时器作业,其通用名称包括它应该在其中运行的网站集 URL。理论上,当在网站集中停用该功能时,它会停止在那里执行,但任何在其他网站集上激活的其他计时器作业功能仍将运行。

在部署解决方案并在一个网站集上激活它后,该作业从未执行任何自定义代码。这篇文章帮助解决了这个问题: http ://www.wahidsaleemi.com/2009/08/sharepoint-timer-jobs-not-running/ 。停止 SP 计时器服务器,删除缓存的 XML 文件,并启动服务后,已激活的站点收集计时器作业完美执行。

但是,在不同的网站集上激活自定义计时器功能会导致该特定网站集的计时器作业未执行的相同初始问题。第一个计时器作业(清除缓存后)仍然可以正常工作。

由于某些用户可以控制可以打开/关闭功能,因此您可以看到这会让人们感到沮丧。制作新的网站集时,必须激活该功能,但它不会运行,直到...清除缓存?我在这里想念什么?

提前致谢。

0 投票
2 回答
1498 浏览

c# - SharePoint SOM 还是 CSOM?

我需要在我们现有的 SharePoint 2013 服务器中执行以下操作:

“创建一个定时作业,查看列表中的行

  • 根据逻辑向用户发送电子邮件通知
  • 更新列表
  • 将用户添加/删除到 AD 组“

根据这篇文章,看起来“服务器对象模型”是解决这个问题的方法:https ://msdn.microsoft.com/EN-US/library/office/jj164060.aspx#ServerOM

但是,目前我的开发机器(Windows 7 Professional,32 位,4 GB RAM)上没有安装 SharePoint。

我认为可以使用 SharePoint 客户端对象模型来实现所需要的。

这里有什么需要注意的吗?