当前位置: 代码迷 >> .NET组件控件 >> bs架构透过active控件读卡为什么读的是服务器上的卡
  详细解决方案

bs架构透过active控件读卡为什么读的是服务器上的卡

热度:236   发布时间:2016-05-04 23:27:54.0
bs架构通过active控件读卡为什么读的是服务器上的卡?
我想通过浏览器的方式使用本地读卡器读卡,使用active控件,在本地测试是能通过的,挂到服务器使用浏览器访问就不能通过,好像是读的服务器的设备,请问大神们怎么实现读本地的卡。
------解决方案--------------------
这要看你的代码是怎么写的。http://www.cnblogs.com/cclx/archive/2009/07/08/1519361.html
------解决方案--------------------
你这肯定是读服务器的吗?

本地要用js来操作active
------解决方案--------------------
???????

用错方式了,应该在js里调用

var activex=new  new ActiveXObject("ACTIVEXJNICCARDLib.ICCardXClass")

当然前提是你做滴真滴是activex控件,而且已经在客户端注册安装,并且ie有足够的权限运行他
------解决方案--------------------
<div style="display:none">
<OBJECT ID="ICCardXCtl" CLASSID="CLSID:active序列号"width="0" height="0" border=0 codebase="版本控制" ></OBJECT>
</div>


var aa="";
var bb="";
document.ICCardXCtl.combaud = 9600
document.ICCardXCtl.comport =1
document.ICCardXCtl.JNIC("68010101020200", aa, bb);
------解决方案--------------------
还有就是要将站点添加到"可信任站点"


------解决方案--------------------
你要有接口开发说明,才能够知道他是怎么调用的啊
------解决方案--------------------
ocx本地regser32 

然后直接JavaScript调用就行了  这才是正常的activx


你说的东西 都写到后台了  我完全不知道干啥的.
------解决方案--------------------
0.安装读卡驱动,阅读驱动文档,添加可信任站点,允许运行ActiveX
1.HTML引入ActiveX
2.JS调用ActiveX中的方法
3.客户端安装ActiveX
调用方法再没别的了。

至于你说的这种情况,建议你阅读下文档,看看读卡驱动是怎么玩的,可能他就是读当前主机的设备。
------解决方案--------------------
引用:
Quote: 引用:

你要有接口开发说明,才能够知道他是怎么调用的啊


里面的方法和属性都是我自己写的封装的,所以我很清楚有些什么,就是前台js如何调用不知道?


假设SDK中定义方法a(int a, sting b)返回string
js中调用var str = activeName.a(0, "他要的东西");

你确定你文档读懂了?
------解决方案--------------------
前台JavaScript 就document.GetXXXXByID("xxxx").方法名就行啊...


楼上说的没错 假设你ocx里有一个方法 叫GetHardInfo  没有参数 返回硬盘序列号..

你就可以

var xxx=document.GetXXXXByID("xxxx").GetHardInfo();就行了..
------解决方案--------------------


引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

你要有接口开发说明,才能够知道他是怎么调用的啊


里面的方法和属性都是我自己写的封装的,所以我很清楚有些什么,就是前台js如何调用不知道?


假设SDK中定义方法a(int a, sting b)返回string
js中调用var str = activeName.a(0, "他要的东西");

你确定你文档读懂了?

哥们:你那个不用new那个active吗?那样能直接得到方法吗?

你还真不会。。。

html:
<object id="oframe" classid="clsid:C9BC4DFF-4248-4a3c-8A49-63A7D317F404">
js:
oframe.Open(url,params);



------解决方案--------------------
引用:
我后台代码using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ACTIVEXJNICCARDLib;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            string aa = "";
            string bb = "";
            ACTIVEXJNICCARDLib.ICCardXClass IC = new ICCardXClass();
            IC.combaud = 9600;
            IC.comport = 1;
            IC.JNIC("68010101020200", out aa, out bb);
            Response.Write(aa + "\n" + bb);
        }
        catch(Exception ex)
        { Response.Write(ex.Message); }
    }
}
这样我用IE访问的时候应该是调用服务器的设备,要调用客户端的设备怎么做?


老兄,你这是服务端代码,在服务端执行的
楼主应该先了解一下BS架构软件中一个请求的生命周期
------解决方案--------------------
额,基本没啥办法,你始终就一句话运行不出来

这样吧,请你先使用ole viewer或者dll vierwer查找出客户端滴com,然后把com接口方法贴出来看看,然后我们再看怎么搞
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:
  相关解决方案