1

同期および非同期の両方のイベント ハンドラー (itemAdded および itemAdding) を使用して、Sharepoint 2010 サイトにユーザーを追加できませんでした - フォーム ベース認証 (Sharepoint から完全に機能しているため、適切にセットアップされ、機能していることがわかっています) を使用しています。私が知る限りのUI)

Membership.CreateUser の呼び出しが機能せず、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」という例外が常にスローされます。メンバーシップをデバッグして調べると、何かが間違っていることが明らかです。ほとんどのメンバーは null であるか、例外もスローします。メンバーシップにはアプリケーション ページでこの問題がないことを知っています (アプリケーション ページからユーザーを追加したり、グループに追加したりできますが、イベント ハンドラー内で失敗します)。当初は HttpContext の問題だと考えていましたが、itemAdding() 内で HttpContext.Current を取得できるため、それほど大きな違いはないかもしれません。

手がかりはありますか?イベント ハンドラー内で SP2010 にユーザーを追加することはできますか?

背景: リストに新しい行を追加すると (電子メール列を含む)、指定された電子メール アドレスを持つユーザーにアクセス許可が付与されます。そのユーザーが存在しない場合は、作成します (フォーム ベース認証の場合)。

4

2 に答える 2

0

あなたの httpcontext.current が null のようです。少なくとも私は同じ問題を抱えていましたが、それが理由でした。このhttp://kbochevski.blogspot.com/2011/01/accessing-membership-database-inside.html を確認してください。

于 2011-01-17T17:24:44.303 に答える
0

共有ポイントの開発を行ったことはありませんが、クロススレッドの問題のように思えます..イベントは、「メンバーシップ」を含むスレッドにアクセスできない新しいスレッドを作成します。デリゲートを使用して渡してみますか?例えば

Object.ItemAdded+= (o, args) => Class.Method(o, args, Membership);
于 2010-12-14T15:54:58.020 に答える