获取ID?像SharePoint这样的当前用户可以吗?

时间:2011-04-11 19:16:20

标签: asp.net wpf sharepoint windowsdomainaccount

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

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

Assigned To field

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

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

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

我想这很简单,我只是没有偶然发现我需要的东西。

1 个答案:

答案 0 :(得分:6)

我想你正在寻找这个:

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

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