"缺少服务器端相关性"的内容定位

SharePoint 运行状况分析器已检测到一些值得关注的关键问题。其中一条为:

作为管理员,我如何能知道哪些地方用到了这个WebPart呢? Google搜索到2条很有用的途径。

1、通过stsadm来查找webpart的引用状况。

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

在返回的xml结果中,可以看到每个web下的webpart节点。

复制代码
<Databases>
  <Database 。。。>
    <Site Id="76754f86-f517-4d46-8331-58378678401f" 。。。>
      <Webs Count="50">
        <Web Id="ef027756-f112-4765-a5b8-d5a13c1b7417" Url="/" LanguageId="2052" TemplateName="STS#0" TemplateId="1">
          <WebParts>
            <WebPart Id="baf5274e-a800-8dc3-96d0-0003d9405663" Count="20" Status="Missing SafeControls entry" Type="Microsoft.SharePoint.WebPartPages.ListViewWebPart" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
            <WebPart 。。。。
          </WebParts>
        </Web>
。。。
复制代码

从中就可以找到一些错误的原因。即使出现在藏的很深的一个子网站里,都可以找到。

2、直接通过数据库来查找。用来检查错误的timerjob实际上在对应的内容数据库上运行了一个这样的查询:

SELECT tp_WebPartTypeId, COUNT(1), tp_Assembly, tp_Class
FROM AllWebParts (NOLOCK)
WHERE tp_WebPartTypeId IS NOT NULL GROUP BY tp_WebPartTypeId, tp_Assembly, tp_Class

通过错误信息提供给我们的WebPartTypeId,进行如下的查询:

SELECT *
FROM AllWebParts
WHERE tp_WebPartTypeId = 'b82a8e9d-8706-3252-0a3b-ba19bf65e250'

 结果中,找到了我要的SiteId。

该表还有一些其他的信息,可供我们排错。常用的几个表以及关系如下:

SELECT Webs.FullUrl, Webs.Title, AllDocs.DirName, AllDocs.LeafName

FROM AllDocs, Sites, AllWebParts, Webs

WHERE Webs.Id = Sites.RootWebId AND AllDocs.Id = AllWebParts.tp_PageUrlID

 AND Sites.Id = AllDocs.SiteId

 

参考资料

Missing Server Side Dependencies - 8d6034c4-a416-e535-281a-6b714894e1aa

How to find missing web part?

posted @   Sunmoonfire  阅读(1225)  评论(4编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示