JAVA技术交流QQ群:170933152

最近做的这个项目真是旧啊。。变态啊。。。为啥想起来用asp去调用vb.net 写的dll。。。天呐。。。

据说,2020年server2008 不再支持asp,2023年server2012 不再支持asp。。。这样也是为了让旧系统能多用几年吧。。

注册的时候做以下补充:

1.前提,对于server2012 系统中要运行的dll,需要先做这个:

找到sn.exe,可以用everything搜,大体在

c:\program Files(x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX4.6.1 Tools\x64下面,搜的话,有好几个,自己找一个,如果是64位就用64,32位用32的,找到sn.exe执行

sn -k testDll.keys  生成这个testDll.keys的文件,这个名字可以自己定义

生成这个文件后:

在ClassLibrary1这个工程中,打开:

assemblyInfo.vb

加上

<Assembly: AssemblyKeyFile("上面生成的keys文件的路径就是....   .keys")>

然后再编译。下面也有说的

1.ClassLibrary1.dll , ClassLibrary1.tlb 只需要这两个文件就可以了

2.注册首先比如把上面两个文件copy到D:\DTS\下面

3.注册:

这里注意不光是要用regasm注册,还需要gacutil,把dll注册到全局gac中,注册全局gac,会在系统中生成ClassLibrary1这样一个文件夹,可以用everything搜到

C:/Windows/Microsoft .NET/Framework/v4.0.30319/RegAsm.exe D:\DTS\ClassLibrary1.dll /tlb:D:\DTS\ClassLibrary1.tlb coodebase

注册全局gac,用gacutil /i ClassLibrary1.dll注册一下,这样就可以了

4.一定要注意,其实我个人试了试,用win10系统的话,只需要用RegAsm.exe,注册一下dll就可以了,但是如果是server2012,

不仅仅需要用regasm注册,还需要把dll加入全局gac,用gacutil /i ClassLibrary1.dll注册一下

5.注意,所有的操作,启动visual studio也好,启动cmd.exe 也好,一定要用管理员权限,右键管理员运行

--------------

好,想用asp调用vb.net dll 得这么做,这个大体写个流程,其他的零碎知识点,后边发博。。

1。用visual studio 写个ClassLibrary1 项目 里面创建一个ComClass1.vb这个文件,创建的时候选择comclass就可以了

创建的时候一定要用comclass,表示我要做个com组件,注意,这个comclass写的组件可以在asp调用的时候传参数

public Function test(byval teststr as String)as String

return “credream”

end Function

2。编写后,编译

注意编译的时候有道道,这里需要下面几步:

a。编译后的目录里面有:ClassLibrary1.dll , ClassLibrary1.pdb ,ClassLibrary1.tlb ,ClassLibrary1.xml这几个文件

这几个文件都被我copy到比如d:\MySample中了,个人喜好

b。写一个Bat文件:

比如test.bat

set p=d:/Mysample

set w=c:/windows/

copy %p%.dll %w%ClassLibrary1.dll

C:/Windows/Microsoft .NET/Framework/v4.0.30319/RegAsm.exe %w%ClassLibrary1.dll /tlb:%w%ClassLibrary1.tlb coodebase

pause

注意这里代码都是我手敲的,不要直接复制啊,有可能有问题,大体意思是:

先把ClassLibrary1.dll copy到c盘的windows目录,这步很重要,要不然,用regasm注册不成功,copy之后,用上面目录的

regasm。exe注册这个dll就可以了,其实这里我直接就把ClassLibrary相关的这几个文件都copy到c盘windows中去了

注意,上面的注册,其实就向注册表中写了一堆的东西,打开注册表搜ClassLibrary1就能搜到,另外,还把ClassLibrary1.dll

自动的copy到了c盘的某个目录,具体哪个目录,去用everything搜一下就知道

c。然后写个asp调用一下试试,需要把iis打开

<DOCTYPE html>

<html>

<body>

<%

response.write("my first page!!")

set s=Server.CreateObject("ClassLibrary1.ComClass1")

response.write(s.test("ok is  a ok ..."))

%>

</body>

</html>

//这里得注意,好像在server2008中,写的时候不需要写Server. 直接写CreateObject就行,写了还出错,在Server2012中,还有win10机器上就需要写这个Server.要不也不对

//顺便说一下,对iis的配置,iis中打开asp,把安全里的,把错误送给浏览器,显示详细错误,打开,还有什么允许父路径,也设为true,ie浏览器上再设置,一下把允许script调试什么的,设置为允许,iis中在error page中,设置成详细错误,asp里面再设置一下允许服务器调试什么的。都打开

这样只要是asp中的VBScript脚本一出错,如果你电脑上安装了visual studio 2017 我装的是2017,就会弹出个框,然后你就可以

debug了。。。

d。试一试行不行,可能不行,很可能不行,就这个我折腾了两天。。。

再这样弄,如果不行的话,

aa。首先用sn。exe,用everything搜,找一个最新那个就行,然后用它执行

sn -k testDll.keys

这样会生成一个keys文件

bb。 在ClassLibrary1这个工程中,打开:

assemblyInfo.vb

加上

<Assembly: AssemblyKeyFile("上面生成的keys文件的路径就是....   .keys")>

cc。指定这个后就再编译工程,再执行上面的bat文件

dd。然后,全局注册,用everything找到gacutil.exe执行

gacutil /i ClassLibrary1.dll  这个可以把gacutil.exe copy到windows里面把,或者把dllcopy到gacutil。exe这个目录里执行,具体就不太清楚到底怎么弄了,弄的时候忘记了,应该是都可以

ee。 然后再泡一下那个asp,试试,应该就可以了

ff。注意如果想修改ClassLibrary1.dll的内容,如果先卸载注册的dll的话,很麻烦,可以这样,我是这样做的

用everything,找到ClassLibrary1.dll,注意这个时候要保证test.asp,在浏览器中跑起来了已经

找到以后挨个删除ClassLibrary1.dll,删着删着,肯定有一个现在被test.asp占用了,删除不了,那就是这个了

以后修改了新的ClassLibrary1.dll,先把iis关掉,然后删除这个目录下的ClassLibrary1.DLL 然后,把新的

ClassLibrary1.dll复制过来,然后再开启iis,再运行test.asp就是新的内容了。

VB.Net工作笔记001---用ASP调用VB.NET编写的dll_ClassLibrary相关推荐

  1. VB.NET工作笔记009---硬件设备写码工具编写_使用串口通信_发送AT指令

    技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 只能说很简单... 这里以使用AT命令VB.net启用SIM卡锁定(Enable SIM Lock ...

  2. vb升级工作笔记001---VB.NET升级到VB.NET 随时更新

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 VB.NET2008-->VB.NET2017: 升级常见问题: 1.resx文件相关问题,有些因为vs验证引起的 ...

  3. Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001

    Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001 看到同事用这个东西了,这个挺好用的说是,可以实现,本地线程间的通信,好像在c++和java中都可以用 现在没时间研究啊,暂 ...

  4. 在ASP 调用 VB.net 编写的dll 出错 提示:Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象

    WIN2008 SERVER或者WIN2012 SERVER,ASP 调用 VB.net 编写的dll 出错 提示: Microsoft VBScript 运行时错误 错误 '800a01ad' Ac ...

  5. VB.NET工作笔记002---asp调用vb6编写的activex dll

    JAVA技术交流QQ群:170933152 注意这里下面写的,这个小项目,个人发现,仅仅写一个sayHello()方法就可以了,仅仅做个例子的话,不用这么麻烦还写这么多.. 打开VB6,新建Activ ...

  6. VB.NET工作笔记005---用visual studio2017 编写WCF vb.net webservice

    技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 近期有个项目要这样用,用vb.net的winform,去调用vb.net写的webservice,真是奇怪的需求,都 ...

  7. VB.NET工作笔记003---使用ASP_vbs脚本_或vb.net调用Sqlserver DTS文件

    JAVA技术交流QQ群:170933152 旧版的asp的估计以后也没人用了,用估计也要换思路了.. vb.net类似下面的把 c#中调用SQLserver的DTS包进行数据的转换 DTS是sql s ...

  8. VB.NET工作笔记008---vs2017创建使用WCF服务_并调用服务demo

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 声明,找的例子,之前没有做过wcf,但是看了看例子感觉挺简单的,记一下吧 WCF的全称是Windows Communic ...

  9. 认识什么是运维中的CI/CD---持续集成交付工作笔记001

    在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常 ...

最新文章

  1. 2021-08-02 json文件批量转化mask,生成train.txt路径make_path.py
  2. 原创|一文读懂主成分分析(PCA)
  3. 空净厂商为何对“9颗星”认证趋之若鹜?
  4. 数学--数论--逆元(拓展欧几里得)模板
  5. 判断一个字符串在另一个字符串中出现的次数
  6. java9-1.类,抽象类,接口的综合小练习
  7. [记录] --- safari浏览器对于yyyy-MM的坑
  8. jQuery.Validate验证库
  9. 入门 | 机器学习中常用的损失函数你知多少?
  10. W/View: requestLayout() improperly called by androidapp:id/toolbar_title} during second layout pass:
  11. Spyder学习笔记1-Jack Xu
  12. 为什么以及如何通过机器人学习编程和项目实践
  13. 概率论:乘法定理、全概率公式以及贝叶斯定理
  14. 一周新论文 | 2020年第12周 | 自然语言处理相关
  15. 冬天到了,分享两款雪花特效代码
  16. EasyRTC视频通话视频会议软件,支持视频会议、会议直播、会议录像的产品
  17. 解决cmd命令控制台窗口一闪而过运行后就消失的方法
  18. Window mobile 软键盘输入法设置
  19. English Learning - L2-11 英音地道语音语调 连读技巧 2023.03.30 周四
  20. 【WebSocket】断连问题排查

热门文章

  1. SpringBoot中静态资源和首页定制
  2. eBPF学习记录(四)使用libbpf开发eBPF程序
  3. Python基础----日期时间
  4. Hibernate Search 6.0.0.Alpha3 发布,数据检索框架
  5. MySQL/MariaDB表表达式(3):视图
  6. Oracle变异表解决方法--ORA-04091错误
  7. 计算机能够这样玩—自我学习,自我思维,自我工作(编程)
  8. 创建精简的SharePoint页面
  9. h3c s5500-28c-si操作
  10. flex builder method