如何找到丢失的 Web 部件?

Posted

技术标签:

【中文标题】如何找到丢失的 Web 部件?【英文标题】:How to find missing web part? 【发布时间】:2011-02-21 22:58:11 【问题描述】:

有人知道如何找到导致此错误的违规 Web 部件吗?

“无法显示或导入此 Web 部件页上的 Web 部件或 Web 窗体控件,因为它未在此站点上注册为安全的。”

我继承了一个使用自定义 Web 部件的旧 SharePoint 2003 门户网站。

我知道这个错误意味着什么。我也知道每个 Web 部件都必须在 web.config 中安装并注册为安全的。问题是我不知道缺少哪一个。 当我尝试在 FrontPage 中打开页面时,我也遇到了同样的错误。

【问题讨论】:

【参考方案1】:

在 QueryString 中使用 contents=1 可从导致错误的页面禁用/删除 WebPart。

【讨论】:

我的问题不是删除web部件,而是找出是哪一个导致了问题,然后安装、注册等等。 StackTrace 不会显示?在 web.config 中将 debug 和 stacktrace 设置为 true。 这就是我现在得到的。理想情况下,我希望看到已添加到页面但未安装在服务器上的 Web 部件名称。还有其他建议吗? [b:此 Web 部件页上的 Web 部件或 Web 窗体控件无法显示或导入,因为它未在此站点上注册为安全的。] Microsoft.SharePoint.ApplicationRuntime.ga(Guid A_0) 的 Microsoft.SharePoint.SPWebPartCollection .a(布尔 A_0, 布尔 A_1)【参考方案2】:
stsadm.exe -o enumallwebs -includewebparts

http://sharepointreporter.wordpress.com/

我相信需要更新到 Sp2,才能使用此命令。有问题的 Web 部件将在结果列表中显示为“缺失”。

【讨论】:

【参考方案3】:

转到机器的事件查看器,您应该能够看到错误条目。在大量条目中,您必须找出与您相关的条目,您将能够看到 sharepoint 站点尝试加载但失败的 Web 部件的名称。如果您在事件查看器中阅读错误条目的完整描述,它会为您提供 webpart 的版本甚至 PublicKey Token。

希望对你有帮助!!!

【讨论】:

有点为我工作。重新启动 IIS 后,Sharepoint 似乎重新加载了在 web.config 中注册的所有 webpart。未找到的将在事件日志中报告。看起来我无法看到每页缺少的 webpart,但这种方法也很好。我之前检查过事件日志,但没有意识到重新启动 IIS 会在启动时为我提供环境的全新快照。【参考方案4】:

尝试阅读:

http://www.bluedoglimited.com/SharePointThoughts/ViewPost.aspx?ID=189

它应该会给你一些解决问题的线索。本质上,您有一个未标记为安全且失败的控件。您很可能可以对其进行配置,但上面的链接还有其他可能的解决方案。

【讨论】:

在我的场景中,我不是无法工作的 Web 部件的开发人员(在这种情况下,我会知道该怎么做)。我是 5 年前由其他人在去年迁移到另一台服务器上的站点上创建的页面的疑难解答者,并且某些自定义 Web 部件丢失或未正确安装。我正在尝试查找此 Web 部件是什么,以便我可以安装它(如果我找到它的安装程序)。【参考方案5】:

在您的网址中添加 content=1。这将为您提供所有已部署的 Web 部件。现在,您可以继续删除每个 Web 部件,以找出导致问题的原因(确保您知道要重新添加 Web 部件)。

例如:如果 Url 是 http://localhost:9000/default.aspx,请尝试使用 http://localhost:9000?contents=1

或者,尝试创建一个新的 Web 部件页面,添加实际页面上的 Web 部件,然后检查哪个导致问题。这将避免更改实际页面。

希望这会有所帮助。

【讨论】:

contents=1,不是 content=1,是的,我知道。我在该页面上得到的是这样的“Error ErrorWebPart”行。如何获取导致错误的 Web 部件的实际名称? 某些页面只有 2 个 Web 部件,即 1 个(通常是开箱即用的)正在工作,而缺少一个自定义 Web 部件。我希望获得诸如“在此服务器上找不到您的 Web 部件引用的文件/类/程序集 ”之类的信息,因此我可以弄清楚要安装什么,但事实并非如此。相反,我看到了一条类似“Error ErrorWebPart”的通用消息,它没有告诉我要查找的内容。【参考方案6】:

我刚刚在MSDN 上提出了同样的答案:

这个 stsadm 帮助我找到了 webpart 以任何方式被引用的位置:

stsadm -o enumallwebs -includewebparts > C:\temp\somelog.txt

然后您可以看到 Web 部件列在某个 <Web Id=... Url=...> XML 节点下,即您知道“罪魁祸首”网站。

那时,我为那些被遗忘的参考资料找到了一些原因:

webpart 用于犯罪网站的某个子站点,该子站点在快速列表或顶部栏中隐藏

webpart 已从罪魁祸首网站中删除,但仍位于“网站集回收站”中。您可以通过访问普通网站回收站,然后在顶部栏描述中查找其链接(“使用此页面恢复...的项目”)。顺便说一句,这个网站集回收站本身有两个视图:一定要检查它们。

在这两种情况下,我都通过使用 SharePoint Manager 浏览罪魁祸首网站获得了一些帮助。有了它,我可以很容易地发现一个被遗忘的子站点的存在,以及这个“二级回收站”的存在。

HTH

【讨论】:

以上是关于如何找到丢失的 Web 部件?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Sharepoint 中找到已登录的用户?

单击小部件时如何呈现祝酒词?

创建加载用户控件的 SharePoint 2013 Web 部件

Gridview 中的小部件在离屏时丢失状态

如何将Web部件区域添加到SharePoint Wiki页面?

如何在 sharepoint 2007 中列出和编辑所有 Web 部件的 html?