2010-12-14 10 views
1

同期イベントハンドラとasycnhronousイベントハンドラ(itemAddedとitemAdding)の両方を使用すると、フォームベース認証を使用してSharepoint 2010サイトにユーザーを追加できませんでした私が言うことからSharepoint UIから完全に機能しているため、セットアップと作業が行われている)イベントハンドラ内でSharepoint 2010にユーザーを追加できません

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

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

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

答えて

0

私は一度も共有ポイントの開発を行っていませんが、クロススレッドの問題のように聞こえます..イベントは 'Membership'を含むスレッドへのアクセス権を持たない新しいスレッドを作成します。デリゲートを使ってそれを渡してみてください。 例えば

Object.ItemAdded+= (o, args) => Class.Method(o, args, Membership); 
+0

それは興味深い考えです。呼び出すスレッドのコードにアクセスすることができないので、私はこれを行うことはできないと思います - 呼び出す代理人を作成することはできますか? さらに調査すると、FBAを使用していないサイトにこの問題が存在しないことがわかりました。だから、FBAのセットアップの面でもっと問題があるかもしれない。 –

+0

もう少しコードが可能でしょうか? – Euclid

関連する問題