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

标签 .net installation activex browser

由于显然没有Flash control that can accept bitmap pastes ,我想考虑自己写一个。不过我宁愿不使用 Flash,所以我想使用 .NET。

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

我在网上找到了一些教程,但他们都希望您将程序集安装在本地计算机上,并注册并信任它和访问它的网站。

这对潜在的匿名 Internet 用户要求很高,即使对于 Intranet 用户,另一种部署方法也更可取。

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

所以我的问题是双重的:

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


  • 回复桑尼:

    是的,很多 JavaScript 富文本编辑器允许您粘贴 链接图片 到文本字段中,它将插入正确的 标签。但是,这仅适用于已经在网络上具有位置的图像,我希望它仅通过从剪贴板复制/粘贴任何随机位图来上传新图像。

    最佳答案

    如果您只对 IE 没问题,我喜欢 IE 托管控件在 Active-X 上的安全模型,但是,从 09 年 1 月 1 日起,Microsoft 不赞成使用 .NET(正在处理)来扩展 IE,因此 XBAP 没问题,但不在 ActiveX 控件或 IE 托管控件中。

    7/13 更新:微软发布了 guidance on implementing in-process extensions ;它仍然被弃用。

    编辑:无需调整注册表,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/code-access-security-hosting-control-in-ie.aspx

    这在 3.5 中已通过 list “修复”。正确操作很复杂,因此请参阅 Shawnfa 的 .NET 安全博客中关于使用 list 的说明 .NET 3.5 Beta。和 post GA .NET 3.5 . Todd 的 Random Discovery 博客也记录了 steps for creating a manifest for a hosted control

    我从一篇关于设置安全性的知识库文章中发现这很有用,但您仍然需要了解很多关于 CAS 的知识:http://support.microsoft.com/kb/892466 .这可能是决定使用(.net)Active-X 还是使用 IE 托管控件时的主要考虑因素——也就是说,哪种安全模型最适合您和您的用户。我希望使用 list 将使 IE 托管控件像单击一次一样工作,其中要求用户“信任”并且系统创建正确的设置。对于我的公司,我们使用可以自动为用户设置安全性,因此我们选择了 ie 托管。

    我从未想过的一件事是我是否必须从(用户)控件继承或不必继承(用户)控件以获得无 ui 控件。这样做对我来说效果更好,但我不得不“隐藏”对象标签所在的 div。

    如果您为调试而编译并在加载控件后附加到 IE 以进行“托管”调试,则调试控件很容易。如果您无法加载控件,请在融合程序集绑定(bind)查看器上查找信息:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打开 IEHost 跟踪:http://support.microsoft.com/kb/313892为了调试加载过程。

    请务必对程序集的每个版本进行版本控制。如果你不这样做,那么当下载缓存中的程序集不同但与 url 引用的程序集具有相同的版本时,IE 会感到困惑并且不会加载控件(gacutil/cdl 清除 .net 下载缓存)

    关于.net - 在 .NET 中创建和部署 ActiveX 控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/299323/

    相关文章:

    c# - 从 C++ 使用 COM Interop 对象

    .net - 使用 AfterTargets 的 MSBuild 任务在转换后加密 web.config

    objective-c - OSX 上自动更新应用程序的常见更新程序?

    ruby-on-rails - 如何在FreeBSD 9.1上搭建rails运行环境

    java - 安装 JRI 时遇到问题(R 到 java)

    c# - ActiveX 控件更新

    c++ - 如何调试 ActiveX 控件 (OCX) 或使其记录错误?

    .net - 如何在 F# 中为 .NET 函数命名

    c# - 使用 TreeView 上的 StateImageList 防止颜色渗色

    vb6 - VB6中如何使用New关键字创建New对象,如新建按钮、标签等