5

私は、SharePointで開始され、非常にカスタムなASP.NETアプリケーションに徐々に移行しているアプリケーションがあるクライアントサイトにいます。それらのデータ要素の一部は引き続きSharePointリスト内でホストされており、現在問題となっているのは「メモ」と「タスク」の2つです(SharePointセットアップのかなり単純なデータ要素であり、特別なことは何もありません)。ASP.NET内から実行できるようにする必要があることの1つは、これらのリスト用にいくつかの新しいアイテムを自動的に作成し、コードから追加することです。

これまでのところ、それはかなり簡単です。それらのアイテムの編集を処理し、デバッガーを接続し、その値を取得する方法やリストに追加されたものを追跡する既存のWebパーツを見つけました。ただし、リストアイテムに追加されるフィールドの1つは'ではありません。非常に明白です。既存のWebパーツUIでは、フィールドは次のようになります。

割り当て先フィールド

基本的に、これは現在のWindowsドメインからユーザーを入力するためのフィールドです。ブックアイコンは、ユーザーが名前などを検索できるポップアップを開きます。現在のテストでは、開発マシンでローカル管理者として実行しています。そのため、ポップアップで「admin」を検索すると、期待どおりにフィールドに「[machinename]\Administrator」が入力されます。次に、デバッグでは、フィールドから取得されてSharePointリストアイテムに入力される値は、名前などではなく「1」になります。

「1」はローカル管理者アカウントの識別子だと思います。結局のところ、理にかなっています。しかし、私の質問は、コードで現在ログインしているユーザーの識別子を取得するにはどうすればよいですか?現在のユーザーの名前を取得するコードを見つけましたが、(文字列であっても)数値IDは見つかりませんでした。

さらに、これはASP.NETアプリケーションコンテキスト内で発生するだけではありません。これらのリストアイテムを生成し、接続時にサーバーに同期するラップトップ用のWPFクライアントアプリケーションもあります。私は現在、クライアントユーザーがサーバーに認識されている適切なドメインアカウントでログインすることを前提に運用しています。

これはとても簡単だと思います。まだ必要なものに出くわしたことがありません。

4

1 に答える 1

6

私はあなたがこれを探していると思います:

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

ちなみに、これはSharePointによってユーザーに割り当てられた内部IDです。WPFアプリケーションからこのIDを取得するには、このIDを返すWebServiceをSharePoint内に展開できます。または、SharePointデータベースにクエリを実行することもできますが、安全かどうかはわかりません:-)

于 2011-04-11T19:27:22.410 に答える