我有一个沙盒解决方案,并使用Linq访问Sharepoint的一些列表。现在,我在列表类型101
中附加了一个事件接收器,因为我必须限制一些上传到图片库的文件。这很好用。
但现在,当我尝试将新项目插入列表时,我的Linq-to-Sharepoint会抛出一个错误(只有使用Linq,如果我通过常规用户界面在该列表上创建新项目,它才能正常工作)。
错误为0x81020089
,消息为The sandboxed code execution request was refused because the Sandboxed Code Host Service was too busy to handle the request.
,但该消息只是默认消息,因为主机服务不太忙,0x81020089是事件接收器的问题。
如果我不附加事件接收器,一切都很好,但当我这样做时会发生错误——即使事件接收器中根本没有代码。
有什么想法吗?
错误消息
0x81020089沙盒代码执行请求被拒绝,因为沙盒代码主机服务太忙,无法处理该请求。
服务器堆栈跟踪
- 在微软。SharePoint。SPGlobal。HandleComException(COMException comEx)
- 在微软。SharePoint。图书馆SPRequest。AddOrUpdateItem(字符串bstrUrl、字符串bstrListName、布尔bAdd、布尔bSystemUpdate、布尔bPreserveItemVersion、布尔bUpdateNoVersion、Int32&plID、字符串&pbstrGuid、Guid pbstrNewDocId、布尔bHasNewDocId,字符串bstrVersion、对象&pvarAttachmentNames、对象&pwarAttachmentContents、对象[pvarProperties、布尔bCheckOut、布尔bCheck in、布尔bMigration、布尔bPublish、字符串bstrFileName、ISP2DSafeArrayWriter pListDataValidationCallback、ISP2DSafeArrayWriter pRestrictInsertCallback、ISP 2DSafeArray Writer pUniqueFieldCallback)
- 在微软。SharePoint。SPListItem。AddOrUpdateItem(布尔bAdd、布尔bSystem、布尔bPreserveItemVersion、布尔bNoVersion、布尔b迁移、布尔bPublish、布尔bCheckOut、布尔bCheck in、Guid newGuidOnAdd、Int32&ulID、Object&objAttachmentNames、Object&aamp;objatthmentContents、布尔suppressAfterEvents、字符串文件名)
- 在微软。SharePoint。SPListItem。UpdateInternal(布尔bSystem、布尔bPreserveItemVersion、Guid newGuidOnAdd、布尔bMigration、布尔bPublish、布尔bNoVersion、布尔bCheckOut、布尔bCheck in、布尔suppressAfterEvents、字符串文件名)
- 在微软。SharePoint。SPListItem。更新()
- 在微软。SharePoint。SPListItem_SubsetProxy。更新__Inner()
- 在系统中。运行时。Remoting。信息传递。StackBuilderSink_PrivateProcessMessage(IntPtr md,Object[]args,Object server,Int32 methodPtr,Boolean fExecuteInContext,Object[]&outArgs)
- 在系统中。运行时。Remoting。信息传递。StackBuilderSink。SyncProcessMessage(IMessage消息,Int32方法Ptr,布尔值fExecuteInContext)
将以下内容放入注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\RPC
那把钥匙必须存在。你不需要一个值。此外,您还必须将该项放置在运行沙盒代码主机服务的每个注册表中。一旦你这样做了,我建议你重新启动机器。
这里有一篇关于这个问题的很棒的博客文章。http://blogs.msdn.com/b/sharepointdev/archive/2011/02/08/error-the-sandboxed-code-execution-request-was-refused-because-the-sandboxed-code-host-service-was-too-busy-to-handle-the-request.aspx
我遇到了同样的问题,问题是ItemUpdating事件接收器上发生的错误(对象引用未设置为对象实例)。。调试应该告诉您缺少什么。。
当您使用linq来sharepoint时,AfterProperties只是由代码更改的属性,这与UI更新不同,在UI更新中,所有属性都将被视为已更改的