none
关于web页面中的ActiveX控件在客户端机器上运行环境同时有.NET FrameWork 1.1和2.0的问题。 RRS feed

  • 问题

  • 问题描述:
    1.在企业内部的BS系统,其中某个web页面上有一个使用.net frame work 1.1写的ActiveX控件,此控件供应商并未提供源代码,当客户端只有.net framework 1.1的时候一切正常.
    2.当一个基于.net framework 2.0的新系统部署后,发现该控件无法正常使用,显示为一个"X".
    3.提取web页面的request.getHeaderNames();可以得到如下描述:"compatible; MSIE 7.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727;"
    4.经过多次测试,卸载.net framework 2.0 以及重装系统,只要系统中只有.net framework 1.1,该控件就可以正常工作.因此推断该控件自动运行在了 .net framework 2.0的CLR中了.
    5.向供应商提出修改需求,对方提出了我方无法承受的价格.
    6.请问有什么途径可以指定该控件在.NET Framework 1.1的CLR中运行.是BS系统客户端机器的环境.
        谢谢诸位.
    2009年7月20日 14:53

答案

  • 您在2.0建立一个com activex 控件   内部放置一个你说的 1.1  usercontrol  并且设置 dock  =fill

    这样在客户端的浏览器里面  浏览器将正确的使用2.0的控件   而2.0控件也会正常调用1.1的控件

    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月21日 3:31
    版主

全部回复

  • 你好 你在配置文件中增加一些配置试试呢

    <configuration>
      <startup>
        <requiredRuntime version="v1.1.4322"/>

        <supportedRuntime version="v2.0.50727"/>
        <supportedRuntime version="v1.1.4322"/>
        <supportedRuntime version="v1.0.3705"/>
      </startup>
    </configuration>

    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月21日 1:40
    版主
  • to 1987raymond:
      谢谢版主的关注。
          这个BS系统的架构是在J2EE上的,这个系统是一个电子病历系统,因为病历的特殊性,需要有一个编辑控件,带有留痕功能与树状节点以及根据临床医学需要的其他特殊功能,无法用jsp或者javascript在web页面上实现,所以嵌入了一个用.net frame work 1.1写的特殊的ActiveX控件.
          这个web页面在客户端的机器的浏览器上运行的时候,这个ActiveX控件所运行的CLR环境可以指定吗?
          再次谢谢版主,小弟在此顿首。
    2009年7月21日 2:47
  • 你好 我之前很少涉及ActiveX所以对于具体的不是很清楚,对于这种情况也不是很了解 期待其他知道的朋友为你解答!
    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://hi.baidu.com/1987raymond
    2009年7月21日 2:53
    版主
  • 控件供应商并未提供源代码,  但是您可以尝试 用2.0的activex 做一层壳  这样由 2.0的环境控制内部 1.1 的组件  似乎可以解决问题
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月21日 2:56
    版主
  • 控件供应商并未提供源代码,  但是您可以尝试 用2.0的activex 做一层壳  这样由 2.0的环境控制内部 1.1 的组件  似乎可以解决问题
    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    谢谢,能说详细一些吗?怎样在2.0环境里控制1.1的组件?
    2009年7月21日 3:07
  • 您在2.0建立一个com activex 控件   内部放置一个你说的 1.1  usercontrol  并且设置 dock  =fill

    这样在客户端的浏览器里面  浏览器将正确的使用2.0的控件   而2.0控件也会正常调用1.1的控件

    答案900, 目标五颗星 Aurvana Air, 音乐真的是随风飘来的 凉宫春日 永无止境的八月 你到底什么时候结束阿。。。。
    2009年7月21日 3:31
    版主
  • 我测试一下啊,然后回来告诉您结果,谢谢,这个思路我还没有想到,小弟顿首。

    2009年7月21日 3:33
  • 你好,

    就我所知,一个进程只能够HOST一个版本的CLR Runtime,所以我想知道为什么你的系统现在自己会Host .NET Framework2.0.我认为不是那个控件自己加载Runtime的。看下这个文章,它讨论了集中Runtime初始化的情形:
    http://msdn.microsoft.com/en-us/library/hz1www0a.aspx

    运行时版本由以下因素确定:

    • COM 应用程序可以在应用程序配置文件中指定运行时版本。

    • 运行时可能已由一个可扩展主应用程序(例如,Microsoft Internet Explorer 或 Microsoft Office)载入内存。COM 应用程序插件使用为主应用程序加载的运行时来运行托管组件。

    • 如果需要严格控制,COM 应用程序可以通过在程序代码中调用 CorBindToRuntimeHost (从 mscoree.dll 中导出)方法预加载一个特定版本的运行时。或者,应用程序也可以根据一个激活的 COM 类,通过调用 GetRequestedRuntimeVersionForCLSID 方法(也从 mscoree.dll 中导出)并将返回值传递到 CorBindToRuntimeHost 来指定不同的目标运行时版本。

    如果没有这些因素,启动代码将加载计算机上安装的兼容运行时的最新版本。



    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2009年7月23日 4:06
    版主