我们这里有一些奇怪的问题。我们有功能事件接收器,我们正在创建自定义字段 - >内容类型 - >名单。之后,添加一个默认项目。在我的VM上它工作正常,但在进入pre-prod环境后,我们得到了这种奇怪的行为,没有异常或日志错误。 首先,项目有时只是创建,没有跟踪发生的事情。大部分都没有创建。我甚至经历过这样的事情:当我激活功能时,我去了列表,所以那里的项目,但刷新后它就消失了! 我们试图在那里设置一些Thread.Sleep()循环(在调试时,item在 Items 集合中,但列表的 ItemsCount 属性始终显示为0)。 现在我的想法是错的。这不是执行时间(也许)。看起来,由于某种原因,SP在创建真实之前杀死了SPItem.Update,我们不知道为什么。我们非常欢迎任何帮助!
答案 0 :(得分:1)
当您尝试从代码访问sharepoint项目而没有管理员权限来更新/删除它们时,请设置网站website.AllowUnsafeUpdates = true;属性
//设置AllowUnsafeUpdates = true以从代码更新数据库/共享点列表。
FormWeb.AllowUnsafeUpdates = true;
NewItem.Update();
FormWeb.AllowUnsafeUpdates = false;
您的代码应该像这样在列表中进行更改..当您将项目添加到列表时。 访问列表并更新其数据时,以相同的方式使用Update语句。
检查是否正确更新列表。可能存在一些SharePoint安全问题。
您可以查看[SPSecurity.RunWithElevatedPrivileges] [1]
[1]:http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spsecurity.runwithelevatedprivileges.aspx,link,link
您可以通过在sharepoint中添加活动来检查那里发生的事情。 检查这篇文章并进行调试.. http://developmentsolutionsjunction.blogspot.com/2011/06/adding-events-and-eventhandlers-in.html
答案 1 :(得分:1)
所以我终于能够找出问题所在。经过深入研究和尝试,我发现有第三方功能。它正在为每个创建的列表添加事件,并删除与公司定义的CT不一致的所有内容。这很奇怪,我真的不明白为什么有人想要这个。但好吧,他们支付,他们的规则。 因此,如果您遇到这样的问题,请尝试这种可能性。 但是,在此过程中我也汲取了一些东西,例如:如果您正在使用来自Web作用域的SP实例,请使用Web范围的功能,而不是站点功能,SP也有一个讨厌的习惯,即静默的异常。另外,如果你是从事件属性中获取SPWeb的实例,并不一定意味着它已经创建。还需要一些时间,Update()本身也是DB必须执行的操作。有时候最好还是检查一下你是否真的有实例,如果没有,那么就会有一段时间停留。
答案 2 :(得分:0)
您是否在代码中使用了.Update()方法?