在.NET中创建和部署ActiveX控件

5

由于似乎没有可以接受位图粘贴的Flash控件,我想考虑自己编写一个。但我不想使用Flash,所以我想使用.NET。

现在我相信一个可以在浏览器中下载和运行的本地代码控件的正确术语是“ActiveX控件”。因此,我的问题是,我能用.NET创建这样的ActiveX控件吗?

我在网上找到了一些教程,但它们都希望你在本地机器上安装程序集,并且注册并信任访问它的网站。

这对于潜在的匿名互联网用户来说要求有点过高,即使对于内部网络用户,也更希望有其他部署方法。

我清楚地记得有些网站要求我下载这个或那个ActiveX控件。在需要Flash和Java等浏览器插件的页面上,有一些机制可以让浏览器知道从哪里获取该媒体类型的插件。

因此,我的问题有两个方面:

  • 我能否在.NET中创建一个可以在用户浏览器中运行的控件?
  • 我能实现哪种(半)自动交付的最佳方法?

作为回应Sunny的问题:
是的,许多JavaScript富文本编辑器允许您将链接图片粘贴到文本字段中,并插入正确的标签。但是,这仅适用于已经在Web上具有位置的图像,我希望通过复制/粘贴任意随机位图来上传新图像。

我非常建议避免在剪贴板功能中进行黑客攻击,除非它是您的Web应用程序的绝对核心功能。 - Eric Schoonover
3个回答

5
如果您只考虑IE,我认为IE托管控件的安全模型优于Active-X。然而,从2009年1月1日起,微软不再支持使用.NET(进程内)来扩展IE,因此XBAP是可以的,但ActiveX控件或IE托管控件则不行。
更新7/13:微软已发布有关实施进程内扩展的指导方针;但仍被弃用。
编辑:未经调整注册表,IE8只能从内部网络或受信任区域加载.NET托管控件,因此在一般互联网使用中,需要使用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/code-access-security-hosting-control-in-ie.aspx

这在3.5版本中通过清单得到了“修复”。由于其复杂性,因此请参阅Shawnfa的.NET安全博客上有关使用清单的说明,以获取正确的方法,包括.NET 3.5 Beta发布GA .NET 3.5的说明。Todd的Random Discovery博客还记录了为托管控件创建清单的步骤

我在设置安全性方面的KB文章中发现了这个有用的内容,但是您仍需要学习关于CAS的知识:http://support.microsoft.com/kb/892466。这可能是决定使用(.net)Active-X还是IE托管控件的主要考虑因素-也就是说,哪种安全模型最适合您和您的用户。我的希望是使用清单将使IE托管控件像单击一次那样工作,其中用户被要求“信任”,并且系统创建了正确的设置。对于我们的公司,我们可以自动设置用户的安全性,因此ie托管是我们的选择。
我从未弄清楚是否必须从(User)control继承ui-less控件。对我来说,这样做效果更好,但我必须“隐藏”对象标记所在的div。
如果您为调试编译并附加到IE进行“托管”调试,则很容易调试控件,一旦您加载了控件。 如果无法加载控件,请查找有关融合程序集绑定查看器的信息:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打开IEHost跟踪:http://support.microsoft.com/kb/313892 以便调试加载过程。
请确保为程序集的每个版本进行版本控制。 如果不这样做,那么IE会感到困惑,并且当下载缓存中的程序集与URL引用的程序集具有相同的版本号但不同的版本时,将无法加载控件(gacutil /cdl清除.net下载缓存)

2

查找“在IE中托管Winforms”。几年前,我也曾经做过类似的事情,那就是我最终能够有所进展的地方。

需要注意两件事情:正如你可能已经注意到的那样,这个问题并不经常出现,因此示例很少。(我不再有任何分享的东西,抱歉)。此外,.NET的安全模型与基于COM的ActiveX大不相同,因此在IE的不同安全区域中使其工作会有些棘手。

如果您有使用Silverlight 2的能力,我可能会倾向于这个方向。


0

使用ActiveX会限制您只能在IE和Windows上使用。最好看一下Google文档和/或Gmail,了解它们如何仅使用JavaScript处理将图像粘贴到电子邮件/在线文档中。适用于大多数浏览器和操作系统。


我想知道在Gmail和Google文档中是否只支持HTML5浏览器的图像粘贴? - Dustin Getz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接