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

版权声明:本文为博主原创文章,未经博主credreamer 允许不得转载 违者追究法律责任。 https://blog.csdn.net/lidew521/article/details/87543600

    JAVA技术交流QQ群:170933152 

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

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

好,想用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就是新的内容了。

猜你喜欢

转载自blog.csdn.net/lidew521/article/details/87543600