使用同步和非同步事件处理程序(itemAdded和itemAdding),我无法将用户添加到我的Sharepoint 2010站点 - 使用基于表单的身份验证(我知道这是正确的设置和工作,因为它已经完美地工作从我可以告诉的Sharepoint UI)
调用Membership.CreateUser不起作用并且不断抛出“未将对象引用设置为对象实例”的异常。调试和查看成员资格,显然有些事情是错误的。大多数成员都是null或抛出异常。我知道成员资格在应用程序页面中没有这个问题(我可以添加用户,将它们添加到组等,从应用程序页面,但它在事件处理程序中失败)。我们原本以为这是一个HttpContext问题,但我们可以在itemAdding()中获取HttpContext.Current,这样可能没什么区别。
任何线索?是否可以在事件处理程序中将用户添加到SP2010?
背景:当我向列表添加新行(带有电子邮件列)时,会向具有指定电子邮件地址的用户授予权限 - 如果该用户不存在,我想创建它(对于Forms,基于身份验证)
答案 0 :(得分:0)
我从来没有做过任何共享点开发,但这听起来像是一个跨线程的问题..该事件将创建一个新的线程,该线程无法访问包含“Membership”的线程。尝试使用委托传递它? 例如
Object.ItemAdded+= (o, args) => Class.Method(o, args, Membership);
答案 1 :(得分:0)
在我看来,你的httpcontext.current为null。至少我有同样的问题,这就是原因。 检查一下http://kbochevski.blogspot.com/2011/01/accessing-membership-database-inside.html 我希望它可能有所帮助