我认为这里的问题是,即使您确实找到了用户列表,如果用户信息列表中不存在用户,工作流也不会触发任何操作。
如果用户信息列表中不存在这些用户,那么您将无法通过 SharePoint 对象模型找到它们,因为它们在 SharePoint 中不存在。您将不得不以其他方式找到它们。
因此,基本上,这取决于您的 SharePoint 服务器上的身份验证配置方式:
如果您使用 FBA,则可以使用 SharePoint 进行身份验证的用户必须存在于 SQL 数据库中的某个位置。Membership.Provider将为您提供 FBA 会员资格提供程序的挂钩(无论是 SqlMembershipProvider 还是其他)。然后,您可以使用类似的方法
Membership.Provider.GetUser(username)
查看用户是否存在。您还可以遍历您的用户或找到所有现有的用户名,然后您可以在您的人员选择器中显示这些用户名。
如果您使用 Windows 身份验证,则必须查看您的 AD 以找到潜在用户。DirectoryEntry对象是您需要的。我想只有来自某个 AD 组的用户才能访问 SharePoint?如果是这样,则使用 DirectoryEntry 对象隔离该组,遍历用户,您将获得人员选择器的数据源。
正如我上面所说,任何一种方法都会为您提供可能的用户,但如果用户尚未登录,它不会使工作流程正常工作。工作流程只会与用户信息列表中确实存在的用户一起正常工作。
当有人选择 SharePoint 中不存在的用户时,您可能必须通过代码创建它。一个安全的方法是使用SPWeb.EnsureUser。
检查指定的登录名是否属于网站的有效用户,如果登录名不存在,则将其添加到 Web site.site。
所以真的,回答你的问题,无处可去。你需要寻找他们可能来自哪里。