我在本地写网站做测试的时候,成功的将ocx控件注册了,功能也可以使用。
但是将网站发布到iis上做测试的时候就出了问题,本地测试正常,发布到iis上就出了问题,说明就是因为ocx控件没有注册。
大神们,有没有遇到过这样的问题呢?如何解决啊?
你的 OCX 是在客户端运行的,还是在服务端运行?
ocx控件是在哪里运行我不知道,我是想让它在服务器运行,这样所有使用网站的用户都不用去注册控件了。
@陈悕: 那我就啰嗦两句。如果你的 OCX 类似 Flash 控件,也就是说在客户的浏览器中呈现,那么它就运行在客户端;如果你的 OCX 只是由运行在服务器端的代码中调用其方法的话,而不需要呈现在客户的浏览器中,那么它就是运行在服务端。
对于前者,必须在每个客户端去注册 OCX ,这是你唯一的选择。关于如何部署 OCX 使其由客户端浏览器自动识别和注册的方法你可以搜一下,网上有很多教程。
@Launcher: 那是一个证件识读器所需要控件,我只是要用js调用方法,将证件信息读取出来即可,那应该是你说的在服务器端运行吧。好吧我去找找,我只搜过如何在iis上调用ocx控件,原来是我的关键词不对啊。
@陈悕: 我很纳闷你为什么会认为 JS 是运行在服务器端的呢?JS 是运行在客户端浏览器中的,因此你的 OCX 必须在客户端注册。
@Launcher: 我知道js是在客户端运行的,但是事实是我即使注册了控件,还是会报出错误的,
@陈悕: 如果你非要说你的这句话“我只是要用js调用方法,将证件信息读取出来即可,那应该是你说的在服务器端运行吧”指明了“js是在客户端运行的”的话,那我只好说我的理解能力有限了。
“事实是我即使注册了控件,还是会报出错误的”,我希望你先找篇教程好好学习下,如果需要通过 IIS 分发 OCX 控件的话,你需要特别注意打包、签名、实现安全接口等操作。
@Launcher: 那句话是我的失误,也是因为太着急才会潜意识里把所有编程语言都当做是服务器端语言,这是我的失误。
我现在的情况是在本地开发写网站时,一切都正常,但是当网站发布到iis上之后,我在iis上打开网站会出错,你让我去找教程,我都不知道问题出在哪里我怎么找?
@陈悕: OCX 控件是你编写的吗?
@Launcher: 是那个证件识读器厂家给的,不是我写的,我刚接触编程才不到1年,也没学过编写ocx啊
@陈悕: 我下面将跟你对话内容都是从网上的教程中摘录的。请问,你的 OCX 打包成 CAB 包了吗?
@Launcher: 没有。还是ocx控件和它依托的一些dll,
@陈悕: 那请你先看看教程:http://www.cnblogs.com/chaodongwang/archive/2009/02/26/1398717.html,所以不要说怎么找,你连如何部署都还不知道,直接在 bing,baidu,google 之类的中输入“ocx cab”就能找到很多教程。
@Launcher: 好吧我先看看,我之前都不知道还要将ocx打包成cab,所以根本都不往那方面想,先谢谢了
@陈悕: 在我的第二条回复中我就已经说明了:“关于如何部署 OCX 使其由客户端浏览器自动识别和注册的方法你可以搜一下,网上有很多教程”,而你就当不存在一样直接略过。
使用相同的方案注册也不行?
我在本地注册时用的regsvr32 控件路径+控件名称,难道iis上也有吗?
还是说在网站发布的路径下注册该控件?
@陈悕: 那你就是没有注册了。OCX是需要使用注册功能执行注册后才可以使用的。这个,一般来说,需要开发这样的需求的网站,需要对服务器有管理权,而不是简单的虚拟站点。
如果不具备管理权,可以考虑找服务方的技术人员解决这个问题。
@519740105: 我现在是在我自己的电脑上发布,发布到局域网,用公司其他电脑试一下看是否成功,还没有放到服务器上,
@陈悕: 那你在目标服务器(电脑上)也注册下这个OCX就好了。
@519740105: 我在我自己的电脑上写的网站,已经成功注册,在vs里预览调试正常。可将网站发布到我电脑的iis上就不正常,我已经成功注册了啊
@陈悕: 是IIS7或以上版本吧?在IIS里,管理下模块,把你的OCX添加进去看。
如果是IIS6,也有一个类似的功能,具体的忘记了。
@519740105: 对的,我iis是7.5的,我没有找到你说的什么管理模块,是在iis里点发布的网站然后在中间会出现一些选项,功能视图。有三个栏目,一个是ASP.NET,一个是IIS,一个是管理。但是管理下边只有一个配置编辑器,这应该是对于配置文件的管理。
@陈悕: IIS管理里,不要选择站点,直接点击服务器,右边有一系列的图标,其中一个是 模块。
@519740105: 添加托管模块?还是配置本机模块?如果是配置本机模块里只能添加dll文件,而我的控件是ocx的。如果是添加托管模块,类型又该如何选择?ocx对应哪个类型啊?
@陈悕: OCX应该是WIN32的吧?使用本机模块,具体的怎么限制了只能选择DLL就有点迷糊了。
本来,OCX是可以通过REGSVR进行注册,然后就能直接使用的。
@519740105: 好吧,本机模块是不能用了,我再去找找别的办法吧,不过还是很谢谢你了
@陈悕: 不客气,没帮你解决问题。
@519740105: 最起码你给我提供了一个方向,比我毫无头绪要强得多。
话说,为什么在iis上注册啊?难道不应该是在客户机上浏览器上注册么?
这个我也想过,但是我将网站发布到我的iis上之后,我在iis上打开网站,我的电脑就算是一台客户机了吧,我的电脑本来就注册过了该控件,可打开之后还是有错误。然后我在另一台电脑上也注册了该控件,然后去打开网站,也是有错误。
@陈悕: 会不会是ocx本身有什么浏览器要求?
@幻天芒: 至于有什么要求,那就是只能在ie下运行,因为我在写网站时试过火狐和谷歌,都不能用,只有在ie下可以正常使用,但是将网站发布到iis之后,连ie也不能正常使用了。
@陈悕: 这个是肯定的,ActiveX就只能支持IE,另外两个是其他一种插件,浏览器有弹出安装选项吗?一般要使用客户端ocx,是需要在html中用<object>标签去引入的。
@幻天芒: 你说的这些我都做了,在ie中打开,允许该控件运行,我在html中也写了<object>引入,还是会说对象不支持此属性或方法,我问过开发商,这错误就是因为找不到控件
@陈悕: 直接在客户机安装ocx的exe版本,然后再测试一下。
@幻天芒: ocx的exe版本是什么,我这里只有一个ocx控件和它依托的一些dll
@陈悕: 一般来说,提供商会有一个exe格式的安装版本。你可以让提供商帮你看看的。
这个问题应该是ocx空间被编译了,直接将原空控件拷贝到相应目录即可!
不行啊,因为它还是提示对象不支持此属性或方法
老大,你这个问题解决了没啊?