如果您只对 IE 没问题,我喜欢 IE 托管控件在 Active-X 上的安全模型,但是,从 09 年 1 月 1 日起,Microsoft 不赞成使用 .NET(正在处理)来扩展 IE,因此 XBAP 没问题,但不在 ActiveX 控件或 IE 托管控件中。
7/13 更新:Microsoft 已发布有关实施进程内扩展的指南;它仍然被弃用。
编辑:无需调整注册表,IE8 只会从 Intranet 或受信任区域加载 .NET 托管控件,因此对于一般 Internet 使用,浏览器内完全信任访问需要 Active-X。
跟进 Russ 的帖子:Silverlight 无法访问剪贴板:http ://silverlight.net/forums/t/13024.aspx
大多数 IE 托管控件信息都在博客中,因此我使用:http ://www.google.com/search?q=ie+hosted+control+site:msdn.com来查找它们。以下是我发现特别有用的。
快速简便的控制:http: //blogs.msdn.com/mikechr/archive/2006/11/28/writing-a-simple-managed-control-under-ie.aspx
关于安全性的奇怪事情,除非“证据”是一个 url,否则程序集可能是可信的,但不是域,需要断言来修复:http: //blogs.msdn.com/carloc/archive/2006/11/01/代码访问安全托管控制在 ie.aspx
这在 3.5 中已通过清单“修复”。正确操作很复杂,因此请参阅 Shawnfa 的 .NET 安全博客中有关使用清单的说明,用于.NET 3.5 Beta并发布 GA .NET 3.5。Todd 的 Random Discovery 博客还记录了为托管控件创建清单的步骤
我从一篇关于设置安全性的知识库文章中发现这很有用,但您仍然需要了解很多关于 CAS 的知识:http: //support.microsoft.com/kb/892466。这可能是决定使用(.net)Active-X 还是使用 IE 托管控件时的主要考虑因素——也就是说,哪种安全模型最适合您和您的用户。我希望使用清单将使 IE 托管控件像单击一次一样工作,其中要求用户“信任”并且系统创建正确的设置。对于我的公司,我们使用可以自动为用户设置安全性,因此我们选择了 ie 托管。
我从未想过的一件事是我是否必须从(用户)控件继承或不必继承(用户)控件以获得无 ui 控件。这样做对我来说效果更好,但我不得不“隐藏”对象标签所在的 div。
如果您为调试而编译并在加载控件后附加到 IE 以进行“托管”调试,则调试控件很容易。如果您无法加载控件,请在融合程序集绑定查看器上查找信息:http: //msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打开 IEHost 跟踪:http: //support.microsoft.com/kb/313892以调试加载过程。
确保对程序集的每个版本进行版本控制。如果你不这样做,那么当下载缓存中的程序集不同但与 url 引用的程序集具有相同的版本时,IE 会感到困惑并且不会加载控件(gacutil /cdl 清除 .net 下载缓存)