我想嵌入一个由服务器创建并发送到客户端以显示在网页中并保持更新的 ActiveX 包装器 (System.Windows.Forms.AxHost) 这可能吗?我认为可以使用对象来完成,但不确定如何使用 C# ASP .Net 来完成
2 回答
阅读您的问题,您可能会更具体地问这个问题:
- 我想要一个在客户端上呈现的服务器上实例化的 activex 控件实例,并保持最新、交互式等,就好像它已在客户端上实例化一样。
不,这是不可能的。当您<object classid="sid="clsid:9BE31822-FDAD-461B-AD51-BE1D1C159921"/>
从服务器传递时,您不会传递该对象的实例。您正在向客户端发送指令以实例化和呈现该对象。归根结底,http 通信只是文本,而不是内存块和可执行代码(这就是实例化对象)。服务器吐出的任何东西都必须在客户端上实例化。浏览器对 html 标签执行此操作,并且可能会这样做对象,如果它们
- 支持对象(java 对象需要 JVM,activex 对象需要 MS 基础设施)
- 该对象已安装或可安装(必须在客户端上执行的代码,因此代码必须到达那里)
- 本地安全设置允许这种事情(通常越来越多地不是这种情况)
ActiveX 控件本质上是客户端(最好避免使用更安全和广泛支持的技术来创建强大的 Web UI,例如ajax)
我相信这篇文章可能对您有所帮助,“在 Web 表单中托管 Windows 控件”。
http://www.4guysfromrolla.com/articles/052604-1.aspx
不过,我想引用这些评论,并牢记这一点:'在 ASP.NET 中托管 Windows 控件有几个值得讨论的限制。首先,它要求客户端计算机至少安装了 .NET 可再发行组件并使用 Internet Explorer 5.01 或更高版本进行浏览。[...] 其次,ASP.NET 不能托管 Windows 窗体。您需要将这些部分抽象为 Windows 控件。最后,由于 Windows 控件不是可以在服务器上运行的 Web 控件,因此在回发期间无法轻松设置或读取属性。