VB.Net工作笔记001---用ASP调用VB.NET编写的dll_ClassLibrary
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相关推荐
- VB.NET工作笔记009---硬件设备写码工具编写_使用串口通信_发送AT指令
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 只能说很简单... 这里以使用AT命令VB.net启用SIM卡锁定(Enable SIM Lock ...
- vb升级工作笔记001---VB.NET升级到VB.NET 随时更新
技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 VB.NET2008-->VB.NET2017: 升级常见问题: 1.resx文件相关问题,有些因为vs验证引起的 ...
- Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001
Disruptor本地线程队列_实现线程间通信---线程间通信工作笔记001 看到同事用这个东西了,这个挺好用的说是,可以实现,本地线程间的通信,好像在c++和java中都可以用 现在没时间研究啊,暂 ...
- 在ASP 调用 VB.net 编写的dll 出错 提示:Microsoft VBScript 运行时错误 错误 '800a01ad' ActiveX 部件不能创建对象
WIN2008 SERVER或者WIN2012 SERVER,ASP 调用 VB.net 编写的dll 出错 提示: Microsoft VBScript 运行时错误 错误 '800a01ad' Ac ...
- VB.NET工作笔记002---asp调用vb6编写的activex dll
JAVA技术交流QQ群:170933152 注意这里下面写的,这个小项目,个人发现,仅仅写一个sayHello()方法就可以了,仅仅做个例子的话,不用这么麻烦还写这么多.. 打开VB6,新建Activ ...
- VB.NET工作笔记005---用visual studio2017 编写WCF vb.net webservice
技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 近期有个项目要这样用,用vb.net的winform,去调用vb.net写的webservice,真是奇怪的需求,都 ...
- VB.NET工作笔记003---使用ASP_vbs脚本_或vb.net调用Sqlserver DTS文件
JAVA技术交流QQ群:170933152 旧版的asp的估计以后也没人用了,用估计也要换思路了.. vb.net类似下面的把 c#中调用SQLserver的DTS包进行数据的转换 DTS是sql s ...
- VB.NET工作笔记008---vs2017创建使用WCF服务_并调用服务demo
技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 声明,找的例子,之前没有做过wcf,但是看了看例子感觉挺简单的,记一下吧 WCF的全称是Windows Communic ...
- 认识什么是运维中的CI/CD---持续集成交付工作笔记001
在软件开发中经常会提到持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)这几个术语.但它们真正的意思是什么呢? 在谈论软件开发时,经常 ...
最新文章
- 2021-08-02 json文件批量转化mask,生成train.txt路径make_path.py
- 原创|一文读懂主成分分析(PCA)
- 空净厂商为何对“9颗星”认证趋之若鹜?
- 数学--数论--逆元(拓展欧几里得)模板
- 判断一个字符串在另一个字符串中出现的次数
- java9-1.类,抽象类,接口的综合小练习
- [记录] --- safari浏览器对于yyyy-MM的坑
- jQuery.Validate验证库
- 入门 | 机器学习中常用的损失函数你知多少?
- W/View: requestLayout() improperly called by androidapp:id/toolbar_title} during second layout pass:
- Spyder学习笔记1-Jack Xu
- 为什么以及如何通过机器人学习编程和项目实践
- 概率论:乘法定理、全概率公式以及贝叶斯定理
- 一周新论文 | 2020年第12周 | 自然语言处理相关
- 冬天到了,分享两款雪花特效代码
- EasyRTC视频通话视频会议软件,支持视频会议、会议直播、会议录像的产品
- 解决cmd命令控制台窗口一闪而过运行后就消失的方法
- Window mobile 软键盘输入法设置
- English Learning - L2-11 英音地道语音语调 连读技巧 2023.03.30 周四
- 【WebSocket】断连问题排查