【问题标题】:Get the ID? of the current user like SharePoint can?拿到身份证?当前用户喜欢 SharePoint 可以吗?
【发布时间】:2011-04-11 19:16:20
【问题描述】:

我在一个客户站点,他们有一个从 SharePoint 开始的应用程序,并且正在慢慢迁移到一个非常自定义的 ASP.NET 应用程序。他们的一些数据元素仍然托管在 SharePoint 列表中,其中两个当前存在问题是一些“注释”和“任务”(在他们的 SharePoint 设置中相当简单的数据元素,它们没有什么特别之处)。我需要在 ASP.NET 中做的一件事是自动为这些列表创建一些新项目并从代码中添加它们。

到目前为止,这很容易。我找到了处理这些项目的编辑的现有 Web 部件,将调试器附加到它,跟踪它如何获取它的值以及它添加到列表中的内容等。但是,添加到列表项的字段之一是t 很明显。在现有的 Web 部件 UI 中,该字段如下所示:

本质上,它是用于输入来自当前 Windows 域的用户的字段。书本图标打开一个弹出窗口,允许用户搜索名称等。在我当前的测试中,我在开发机器上以本地管理员身份运行。所以我只是在弹出窗口中查找“admin”,并按预期使用“[machine name]\Administrator”填充该字段。然后,在调试中,从字段中提取并输入到 SharePoint 列表项的值是“1”,而不是名称或类似名称。

我假设“1”是本地管理员帐户的标识符。毕竟是有道理的。但我的问题是,如何在代码中获取当前登录用户的标识符?我找到了获取当前用户名的代码,但不是任何类型的数字(即使它是字符串)ID。

此外,这不仅仅发生在 ASP.NET 应用程序上下文中。还有一个用于笔记本电脑的 WPF 客户端应用程序,它将生成这些列表项并在连接时将它们同步回服务器。我目前的操作是假设客户端用户将使用服务器已知的正确域帐户登录。

我想这很容易,只是我还没有发现我需要的东西。

【问题讨论】:

    标签: asp.net wpf sharepoint windowsdomainaccount


    【解决方案1】:

    我想你正在寻找这个:

    int userId = SPContext.Current.Web.CurrentUser.ID;
    

    顺便说一下,这是 SharePoint 分配给用户的内部 ID。要从 WPF 应用程序获取此 Id,您可以在 SharePoint 中部署一个 WebService,该服务将返回此 Id。或者您甚至可以查询 SharePoint 数据库,但我不确定它是否安全 :-)

    【讨论】:

    • 非常好,绝对是我在 ASP.NET 方面所需要的。 (我认为这很容易,我只是对 SP 一无所知。) WPF 有点复杂,因为它需要在有时连接的模型中工作。因此,无法保证 SP 连接性。我想最坏的情况是客户端机器将项目排队在本地存储中(这已经不是与 SP 相关的),并且在将它们推送到 Web 服务时,分配 ID,因为 Web 服务会实际添加到 SP列表。我需要与客户端核实以确保 Web 服务具有 SP 上下文。
    • 您也可以获取此 ID 一次,然后将其存储在新数据库中。会更容易和更快。
    • 是的,我想我将不得不采用某种解决方法。我正在考虑将一些基本数据元素存储在客户端笔记本电脑的表格中,当它到达同步 Web 服务器(现有功能,它现在同步大量内容)时,只需添加一种方法将这些元素上传到服务器并让服务器弄清楚细节。现在的停止点是,我认为 SP 上下文在同步 Web 服务上不可用,因此我必须将其作为架构问题来解决。谢谢!
    • 此外,此用户 ID 特定于每个网站集。同一个用户可以(并且可能会)在集合中拥有不同的 ID。
    • @Kit Menke:注意。在这种情况下,这不是问题,客户端只有一个网站集(我目前知道,至少......这不会是第一个惊喜)并且随着时间的推移离开 SharePoint。但要知道一个很好的提示,谢谢。 (不相关但值得注意的是,SharePoint Stack Exchange 网站今天公开了测试版。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-12
    相关资源
    最近更新 更多