2

如何将参数传递给 SharePoint 计时器作业?

顺便说一句,我只是 SharePoint 的初学者。

谢谢。

更新

我正在根据外部数据库状态将文档从一个站点移动到另一个站点。所以我想将那些数据库用户名和密码、SharePoint 网站的名称作为参数传递。我不想硬编码那些。

4

3 回答 3

3

您可以使用SPWorkItemJobDefinition

可以TextPayload用来传递参数(document url, fromSiteUrl, toSiteUrl etc.)

这就像使用队列。从 UI 传入一些参数。Timerjobs处理队列,读取有效负载并开始处理。

于 2012-07-02T13:59:35.957 回答
2

当您编写计时器作业时,您将覆盖Execute(Guid targetInstanceId). SPJobDefinition不幸的是,在这里您不能传递任何参数。

您可以做的是将值存储在某个地方,您的计时器作业将能够访问它们。正如这个问题所提到的,一种方法是将其放在.config14 Hive 内的文件中。或者一些数据库表。或者SPPropertyBag在你的SPWeb.

于 2012-07-02T09:41:57.210 回答
1

您可以将您的用户 ID 和 psw 存储在配置文件中,即 OWSTIMER.EXE.CONFIG。您可以在 C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\BIN 中找到此文件。如果不是他们,那么您可以创建一个。请确保文件名必须是大写字母。下面我提到了这个配置文件的示例内容。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <appSettings>
      <add key="USERID" value="testUser" />
      <add key="PSW" value="testPSW" />
    </appSettings>
</configuration>

如果您使用的是 C#,那么您可以使用

System.Configuration.ConfigurationManager.AppSettings["USERID"]
System.Configuration.ConfigurationManager.AppSettings["PSW"]

一旦您在配置文件中进行了更改,请不要忘记重置您的共享点计时器服务。

于 2012-07-30T06:13:03.963 回答