5

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

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

分配给字段

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

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

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

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

4

1 回答 1

6

我想你正在寻找这个:

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

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

于 2011-04-11T19:27:22.410 回答