由于业务上需要读IC卡,小弟在WEB程序里调用读卡DLL,结果在测试时,在IIS管理器里的网站,右键浏览,可以执行,而在INTERNET EXPLORER 用网址打入运行却不行。提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏 ...的错误,请问这是神马问题啊!DLL使用DELPHI写的。急急急急急急急急急急急急!

解决方案 »

  1.   

    楼主这个还真的不是很好说啊,一般是内存溢出,你看看是不是有代码访问同一内存,或者增长Copy,建议楼主将所有的代码加  try  catch,跟踪下,能解决问题的。
      

  2.   

    通常是参数传递不对,之前做rfid时也要读卡,有碰到过类似问题
      

  3.   

    那个dll和网站有没有安全认证?设置ie安全选项,将网址加入可信任站点中试试
      

  4.   

    我之前也调用DELPHI写的DLL(调用的代码用到委托),因该DLL有读写功能,先需要在BIN目录新建文件夹,开放该文件夹的安全(支持用户修改),另外放到服务器C:\WINDOWS\system32
      

  5.   

    你怎么保证客户端有那个 dll 呢
      

  6.   

    不用客户端有那个组件,只要服务器注册该DLL组件就行。
    下面具体介绐二种,我之前是使用第一种方法(简单),希望能帮楼主解决问题第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\\temp\\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\\temp\\regsvr32 /u aneiodbc.dll 第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步骤如下: 
    1) 打开IIS管理控制台。 
    2) 展开transaction server,右键单击pkgs installed然后选择new package。 
    3) 单击create an empty package。 
    4) 给该包命名。 
    5) 指定administrator帐号或则使用interactive(如果服务器经常是使用administrator 登陆的话)。 
    6) 现在使用右键单击你刚建立的那个包下面展开后的components。选择 new then component。 
    7) 选择 install new component 。 
    8) 找到你的.dll文件然后选择next到完成。 
    要删除这个对象,只要选择它的图标,然后选择delete。 
    附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。