0

情况就是这样,我希望有一个用户可以代表其他人(以编程方式)输入时间。

当我为 ms 项目服务器的 web 服务执行 QueueUpdateTimeSheet 时,如果尝试为另一个输入时间,它就不起作用。

我尝试模拟,但我需要知道我想模拟的人的用户名和密码。我可以拥有这些信息,但我不想管理它。

我开始查看代理时间表。我不知道这是否会回应我的问题。

有谁能够帮助我 ...

4

1 回答 1

2

据我所知,没有什么神奇的方法可以让你替代时间表。如果您希望能够代表其他用户使用 QueueUpdateTimesheet 的方法,您将不得不“破解”一点您的 DataSet。

请注意,您需要完成模拟用户的先决条件 ( http://msdn.microsoft.com/en-us/library/aa974413.aspx )。全部完成后,您可以继续;)

首先,检索您的 timesheetRow:

Proxy.TimesheetListDataSet.TimesheetsRow tsFound = null;
            foreach (Proxy.TimesheetListDataSet.TimesheetsRow ts in ds.Timesheets)
            {
                if (ts.WPRD_START_DATE <= day.Date && ts.WPRD_FINISH_DATE > day.Date)
                {
                    tsFound = ts;
                    break;
                }
            }

然后检索时间表数据集:

Proxy.TimesheetDataSet tds = timesheetSvc.ReadTimesheet(tsFound.TS_UID);

然后执行此操作以启用代理:

if (Boolean.Parse(tds.Headers.Rows[0]["TS_IS_CONTROLLED_BY_OWNER"].ToString()) == true)
                {
                    tds.Headers.Rows[0]["TS_IS_CONTROLLED_BY_OWNER"] = false;
                    tds.Headers.Rows[0]["TS_CREATOR_RES_UID"] = "[SUPER USER GUID]"
                }

最后推送更新的数据集:

timesheetSvc.QueueUpdateTimesheet(Guid.NewGuid(), tsFound.TS_UID, updatedTimesheetDataSet);

希望能帮助到你!

告别

于 2009-03-27T16:03:29.497 回答