【问题标题】:SandBox Webpart embedded inside Masterpage in SharePoint 2013 giving error嵌入在 SharePoint 2013 中的 Masterpage 中的 SandBox Webpart 给出错误
【发布时间】:2015-01-08 03:56:48
【问题描述】:

嗯,SharePoint 2013 对沙盒不太友好。有很多问题。

在 SharePoint 2010 中,我能够使用以下方法成功地将沙盒 Web 部件嵌入到母版页中:

<WebPartPages:SPUserCodeWebPart runat="server" Description="Description" Title="TITLE"
    AssemblyFullName="$SharePoint.Project.AssemblyFullName$" SolutionId="00000000-0000-0000-0000-00000000000"
    ID="ID" TypeFullName="Namespace.WP">
</WebPartPages:SPUserCodeWebPart>

但是,当我在 SharePoint 2013 的母版页中添加此内容时,我收到以下错误:

ExecuteRequestInSandBox 调用失败。 System.NullReferenceException:对象引用未设置为对象的实例。 at Microsoft.SharePoint.WebPartPages.BinaryWebPartSerializer.Serialize(PersonalizationScope scope, BinaryWebPartSerializerFlag binaryWebPartSerializerFlags, BinaryWebPartSerializerWriter writer) at Microsoft.SharePoint.WebPartPages.BinaryWebPartSerializer.Serialize(SerializationMode mode, BinaryWebPartSerializerFlag binaryWebPartSerializerFlags, BinaryWebPartSerializerWriter writer) at Microsoft.SharePoint.WebPartPages.SPUserCodeWebPart.EnsurePersistedBlobsMatchPropertiesCollection () 在 Microsoft.SharePoint.WebPartPages.SPUserCodeWebPart.GetWebPartDataForRemoteCall(Object& viewState, Object& controlState) 在 Microsoft.SharePoint.UserCode.SPUserCodeWebPartRemoteExecutionHelper.ExecuteRequestInSandBox(HttpContext context, SPWeb web, SPWebPartManager manager, SPUserCodeWebPart userCodeWebPart)

【问题讨论】:

  • 我也有同样的问题,如果你找到了解决办法,可以分享一下吗?
  • 你可以参考我的回答。我一直保持这个问题,也许有人会解决这个问题。
  • 我现在正在尝试调试它。我正在对程序集进行逆向工程。此行抛出 NRE:SPAttachedProperty propertyData = this.AttachedProperties.Get(this.m_webPart, pair2.Key + "Resource"); m_attachedProperties 为 null,因为 BinaryWebPartSerializer 传递了 null SPWebPartManager 并且 Web 部件具有可个性化的属性。我会看看我能做些什么来解决这其中的任何一部分..
  • 即使不添加任何属性,也似乎有 22 个可个性化的属性。所以问题是 Web 部件没有 Web 部件管理器。将一个添加到母版页会给出一个错误,即一个已经存在...不确定下一步是什么...?
  • 更新,SetWebPartManager 应该在 Web 部件上设置它,从 WebPartManager.OnPageInitComplete (所有内部/隐藏方法)。现在调试它,看看为什么没有发生。

标签: sharepoint master-pages sandbox sharepoint-2013


【解决方案1】:

我尝试了很多方法,但您似乎无法将沙盒 Web 部件嵌入到母版页中。但是,场级 Webpart 解决方案可以成功嵌入到母版页中。

我不知道为什么会这样。但是,您可以部署一个嵌入了 SandBox WP 的应用程序页面,并且该应用程序页面可以正常工作。这是非常有趣的行为。

目前,我将这个问题保持开放。也许有人会弄清楚这种疯狂。

唯一不好的是您无法将母版页部署到 SharePoint Online(托管),因为它不允许场级解决方案。也许 AppParts、iFrames 或带有后端假服务的嵌入式 javascript/jQuery 可能会解决问题,但出于我的目的,我正在考虑更复杂一点。

【讨论】:

  • 这是一个旧帖子和答案,但如果您将 SP 2013 场更新到至少版本 15.0.4569(Service Pack 1),那么您不应该在使用沙盒控件时遇到此问题OP。
【解决方案2】:

我通过在 Register 标签中将引用程序集的版本从 15.0.0.0 更改为 16.0.0.0(或者更确切地说,完全删除程序集名称的版本和关键部分)解决了这个问题。

基本上我认为第 15 波中存在一个错误,已在第 16 波中修复。

唯一的问题是,我的开发环境是第 15 波(我猜其他人也是)。但是从引用标记中删除版本号,至少不会完全崩溃,只是在 web 部件出现的位置给出错误消息。

【讨论】:

  • 我最终完全放弃了 SandBox。似乎 MSFT 正在弃用这一点,并为应用程序模型推动更多。目前,我只是在使用 Farm-Level 解决方案,但一旦它成熟,我可能也会使用应用模型。
  • 沙盒是我唯一的选择。我在 SP 在线(所以没有农场),应用程序模型很糟糕。在团队尝试使用该应用模型数周后,疼痛难忍。
  • 我同意,App Model 很痛苦......这就是为什么我在等待它成熟......好吧,在那种情况下,我很高兴你能弄明白。 =)
  • 这是一个旧帖子和答案,但如果您将 SP 2013 场更新到至少版本 15.0.4569(Service Pack 1),那么您应该不会遇到此问题。
【解决方案3】:

今天在 SP 农场上遇到了类似的问题。安装 SharePoint 2013 SP1 后,此问题已修复。如果您遇到这种情况,请检查您的补丁版本。如果小于 15.0.4569,至少升级到 15.0.4569。

【讨论】:

    猜你喜欢
    • 2011-04-09
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 2014-11-27
    • 1970-01-01
    • 2014-05-15
    • 1970-01-01
    相关资源
    最近更新 更多