1

使用同步和异步事件处理程序(itemAdded 和 itemAdding),我无法将用户添加到我的 Sharepoint 2010 站点 - 使用基于表单的身份验证(我知道它可以正确设置和工作,因为它在 Sharepoint 上运行良好UI据我所知)

调用 Membership.CreateUser 不起作用并不断抛出“对象引用未设置为对象实例”的异常。调试并查看成员资格,很明显有问题。大多数成员为空或抛出异常。我知道成员资格在应用程序页面中没有这个问题(我可以从应用程序页面添加用户、将它们添加到组等,但它在事件处理程序内部失败)。我们最初认为这是一个 HttpContext 问题,但我们可以在 itemAdding() 中获取 HttpContext.Current,所以这可能没有太大区别。

有什么线索吗?是否可以在事件处理程序中将用户添加到 SP2010?

背景:当我向列表中添加新行(带有电子邮件列)时,将向具有指定电子邮件地址的用户授予权限 - 如果该用户不存在,我想创建它(再次,用于基于表单的身份验证)

4

2 回答 2

0

我从未做过任何共享点开发,但这听起来像是一个跨线程问题。该事件将创建一个新线程,该线程将无法访问包含“会员”的线程。尝试使用委托传递它?例如

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

在我看来,您的 httpcontext.current 为空。至少我有同样的问题,这就是原因。检查这个http://kbochevski.blogspot.com/2011/01/accessing-membership-database-inside.html 我希望它可能会有所帮助

于 2011-01-17T17:24:44.303 回答