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

时间:2012-07-02 07:45:25

标签: c# sharepoint

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

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

感谢。

更新

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

3 个答案:

答案 0 :(得分:3)

您可以使用SPWorkItemJobDefinition

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

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

答案 1 :(得分:2)

编写计时器作业时,您将覆盖Execute(Guid targetInstanceId)中的SPJobDefinition方法。在这里你不能遗憾地传递任何参数。

您可以做的是将值存储在某个位置,您的计时器作业可以访问它们。正如this question提到的那样,一种方法是将其放在14个Hive中的.config文件中。或者一些数据库表。或SPPropertyBag中的SPWeb

答案 2 :(得分: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"]

在配置文件中进行更改后,别忘了重置您的sharepoint计时器服务。