Sharepoint 如何识别不安全的web部件/控件

Sharepoint 如何识别不安全的web部件/控件,sharepoint,safecontrols,Sharepoint,Safecontrols,尝试编辑SharePoint网站中的页面时出错。使用WinDbg,我发现实际错误为: Microsoft.SharePoint.ApplicationRuntime.SafeControls+UnsafeControlException 在我看来,页面上有一个控件,它不包含在web.config的部分中。我已经查看了页面的aspx文件,但是在那里我看不到任何控件在web.config中没有引用 深入挖掘(并使用)我从callstack中获得了导致错误的以下数据: 0:013> !mfram

尝试编辑SharePoint网站中的页面时出错。使用WinDbg,我发现实际错误为:

Microsoft.SharePoint.ApplicationRuntime.SafeControls+UnsafeControlException

在我看来,页面上有一个控件,它不包含在web.config的部分中。我已经查看了页面的aspx文件,但是在那里我看不到任何控件在web.config中没有引用

深入挖掘(并使用)我从callstack中获得了导致错误的以下数据:

0:013> !mframe 03
0:013> !mdv
Frame 0x3: (Microsoft.SharePoint.ApplicationRuntime.SafeControls.GetTypeFromGuid(System.Guid)):
[A0]:this:0xc00c03e8 (Microsoft.SharePoint.ApplicationRuntime.SafeControls)
[A1]:guid:{ef2d8253-a451-56da-be1d-5f32d5227173} VALTYPE (MT=0000064278430ea8, ADDR=000000000308caa0) (System.Guid)
[L0]:null (System.Type)
[L1]:0x633c50 (System.String) STRVAL=The type could not be found or it is not registered as safe.
[L2]:null (System.Type)

看起来我找到了导致问题的控件([A1])的GUID。但是,我不知道如何找到此GUID引用的控件。SQL Server中必须有一个存储此信息的表?我已经尝试过dbo.WebParts,用GUID对照tp_ID进行选择,但没有找到任何结果。我想我遗漏了什么?

要以编程方式操作Web部件,可以使用

请参阅以了解如何从页面中删除或定位webpart


使用debugger,列出所有这些Web部件应该相当容易,只需查看Coresponding DisplayTitle以显示特定ID即可。

哇!慢慢地从SQL Server返回;)

首先要看的是这个问题

Closed是您在不处于“编辑页面模式”时获得的菜单操作,它只是在视图中隐藏web部件-SharePoint仍尝试加载其程序集,如果没有相应的安全控件条目,您将收到错误

如果这是问题所在,那么删除它的简单方法是将?contents=1放在URL的末尾,页面将以维护模式打开


希望这有帮助

使用reflector,我发现它们是如何为每个控件生成GUID的:

internal static Guid GetTypeId(MD5HashProvider md5Provider, Type type, string assemblyName)
{
    byte[] bytes = new UnicodeEncoding().GetBytes(assemblyName + "|" + type.FullName);
    return new Guid(md5Provider.GetHash(bytes));
}
因此,如果您真的想找到它,请运行每个程序集和类型,并匹配GUID。
祝你好运我也有同样的问题。我计划一次删除一个控件,直到我确定它是哪一个。

如果您正在使用WinDbg,可能您已经检查了ULS日志和事件查看器,但没有发现任何内容?老实说,我跳过了检查ULS日志和事件日志的步骤。我会回去检查一下,以防有有用的东西列出来。