【问题标题】:Sharepoint event receiver and linq to sharepointSharepoint 事件接​​收器和 linq 到 sharepoint
【发布时间】:2012-11-14 19:44:51
【问题描述】:

我有一个沙盒解决方案并使用 Linq-to-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 沙盒代码执行请求被拒绝,因为沙盒代码主机服务太忙而无法处理请求。

服务器堆栈跟踪

  • 在 Microsoft.SharePoint.SPGlobal.HandleComException(COMException comEx)
  • 在 Microsoft.SharePoint.Library.SPRequest.AddOrUpdateItem(字符串 bstrUrl,字符串 bstrListName,布尔 bAdd,布尔 bSystemUpdate,布尔 bPreserveItemVersion,布尔 bUpdateNoVersion,Int32 和 plID,字符串和 pbstrGuid,Guid pbstrNewDocId,布尔 bHasNewDocId,字符串 bstrVersion,对象和 pvarAttachmentNames, Object& pvarAttachmentContents, Object& pvarProperties, Boolean bCheckOut, Boolean bCheckin, Boolean bMigration, Boolean bPublish, String bstrFileName, ISP2DSafeArrayWriter pListDataValidationCallback, ISP2DSafeArrayWriter pRestrictInsertCallback, ISP2DSafeArrayWriter pUniqueFieldCallback)
  • 在 Microsoft.SharePoint.SPListItem.AddOrUpdateItem(Boolean bAdd、Boolean bSystem、Boolean bPreserveItemVersion、Boolean bNoVersion、Boolean bMigration、Boolean bPublish、Boolean bCheckOut、Boolean bCheckin、Guid newGuidOnAdd、Int32& ulID、Object& objAttachmentNames、Object& objAttachmentContents、Boolean suppressAfterEvents , 字符串文件名)
  • 在 Microsoft.SharePoint.SPListItem.UpdateInternal(布尔 bSystem、布尔 bPreserveItemVersion、Guid newGuidOnAdd、布尔 bMigration、布尔 bPublish、布尔 bNoVersion、布尔 bCheckOut、布尔 bCheckin、布尔 suppressAfterEvents、字符串文件名)
  • 在 Microsoft.SharePoint.SPListItem.Update()
  • 在 Microsoft.SharePoint.SPListItem_SubsetProxy.Update__Inner()
  • 在 System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Int32 methodPtr, Boolean fExecuteInContext, Object[]& outArgs)
  • 在 System.Runtime.Remoting.Messaging.StackBuilderSink.SyncProcessMessage(IMessage msg, Int32 methodPtr, Boolean fExecuteInContext)

【问题讨论】:

    标签: sharepoint sharepoint-2010 event-receiver linq-to-sharepoint sandbox-solution


    【解决方案1】:

    将以下内容放入注册表:

    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

    【讨论】:

    • 非常感谢您的回答。由于我不得不从我的项目中删除 Linq-to-Sharepoint 并且无法测试此解决方案,因此我将其设置为正确答案 - 无论遇到此问题的人,您能否确认它是否有效? :)
    【解决方案2】:

    我遇到了同样的问题,问题是 ItemUpdating 事件接收器上发生的错误(对象引用未设置为对象的实例)。调试应该告诉你缺少什么。

    当您使用linq to sharepoint时,AfterProperties只是被代码更改的属性,这与UI更新不同,所有属性都将被视为已更改

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 2014-09-29
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多