首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何识别不安全的web部件/控件

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

Stack Overflow用户
提问于 2009-08-25 14:21:58
回答 3查看 3.8K关注 0票数 2

在试图编辑SharePoint站点中的页面时,我会遇到一个错误。使用WinDbg,我看到实际的错误是:

Microsoft.SharePoint.ApplicationRuntime.SafeControls+UnsafeControlException

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

深入挖掘(并使用Sosex.dll),我从调用堆栈中获得了以下数据,这导致了错误:

代码语言:javascript
复制
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)

所以看起来我找到了导致问题的控件的GUID (A1)。但是,我不知道有什么方法可以找到这个GUID引用的控件。Server中一定有存储这些信息的表吗?我已经尝试过dbo.WebParts,用GUID针对tp_ID进行选择,但是没有发现任何结果。我想我漏掉了什么?

EN

回答 3

Stack Overflow用户

发布于 2009-08-26 11:11:42

哇哦!)缓慢地远离Server ;)

首先要看的是封闭web部件与已删除web部件之间的区别

关闭是菜单操作,当你没有在“编辑页面模式”,它只是隐藏web部件对视图- SharePoint仍然试图加载它的程序集,如果没有相应的安全控制条目,你会得到错误。

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

希望这该死的!

票数 2
EN

Stack Overflow用户

发布于 2009-08-25 14:28:15

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

请参阅这篇文章,了解如何从页面中删除或定位See部件。

使用调试器,可以很容易地列出所有这些see部件,只需查看特定ID的代码响应DisplayTitle即可。

票数 0
EN

Stack Overflow用户

发布于 2010-07-01 14:11:47

使用反射器,我发现它们就是这样为每个控件生成GUID的:

代码语言:javascript
复制
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。祝好运。我也有同样的问题。我计划一次移除一个控件,直到我确定它是哪一个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1328614

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档