情况就是这样,我希望有一个用户可以代表其他人(以编程方式)输入时间。
当我为 ms 项目服务器的 web 服务执行 QueueUpdateTimeSheet 时,如果尝试为另一个输入时间,它就不起作用。
我尝试模拟,但我需要知道我想模拟的人的用户名和密码。我可以拥有这些信息,但我不想管理它。
我开始查看代理时间表。我不知道这是否会回应我的问题。
有谁能够帮助我 ...
情况就是这样,我希望有一个用户可以代表其他人(以编程方式)输入时间。
当我为 ms 项目服务器的 web 服务执行 QueueUpdateTimeSheet 时,如果尝试为另一个输入时间,它就不起作用。
我尝试模拟,但我需要知道我想模拟的人的用户名和密码。我可以拥有这些信息,但我不想管理它。
我开始查看代理时间表。我不知道这是否会回应我的问题。
有谁能够帮助我 ...
据我所知,没有什么神奇的方法可以让你替代时间表。如果您希望能够代表其他用户使用 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);
希望能帮助到你!
告别