当前位置:编程学习 > C#/ASP.NET >>

问你一个asp.net处理请求的问题..

当asp.net正在处理一个请求的时候....

这个时候更新了dll文件,会怎么样呢??? --------------------编程问答-------------------- 相安无事,3中 1种 在调用这个DLL DLL 更新那么会直接调用新的 在调用中更新DLL, DLL 会生成新的文件 旧的照样执行 --------------------编程问答-------------------- 不知道,这个得测试一下才能知道!应该是不影响的! --------------------编程问答-------------------- 看iis是否以及加载了dll 没有 那就调用新的 已近加载那就调用久的 --------------------编程问答--------------------
引用 1 楼 peng2739956 的回复:
相安无事,3中 1种 在调用这个DLL DLL 更新那么会直接调用新的 在调用中更新DLL, DLL 会生成新的文件 旧的照样执行

但是如果更新dll,还有更改web.config 会引起程序池回收~不是吗? --------------------编程问答--------------------
引用 4 楼 a121984376 的回复:
Quote: 引用 1 楼 peng2739956 的回复:

相安无事,3中 1种 在调用这个DLL DLL 更新那么会直接调用新的 在调用中更新DLL, DLL 会生成新的文件 旧的照样执行

但是如果更新dll,还有更改web.config 会引起程序池回收~不是吗?


如果网站正在运行的时候,你能够用更改DLL吗?即使当前没有使用的DLL,在网站运行的时候,你也是不能访问的。
网站根本不允许你访问。这也是网站的安全机制。 --------------------编程问答-------------------- dll中的类正在被调用,说明已经被IIS加载了dll,这时候更新程序,旧的dll会继续运行,不会被中断或程序报错.

还没有被调用的dll会被IIS重新加载,当有用户调用这dll时,会执行新的dll

vs2002/2003如果这样更新会被为断
vs2010这样更新没有问题,我经过这样更新,没发现被为断过 --------------------编程问答-------------------- 更新前后,互不影响,如果恰好同时进行(正在读取dll还没读完时更新),则会报错。 --------------------编程问答-------------------- 如果bin目录下的dll变了,ASP.NET会新建一个AppDomain来接收新的请求。老的继续运行,直到原来已有的请求都结束掉。
引用 Shadow Copies and Restarts:
If you copy an updated dll into an application’s bin subdirectory, the ASP.NET runtime recognizes there is new code to execute. Since ASP.NET cannot swap the dll into the existing AppDomain , it starts a new AppDomain. The old application domain is “drain stopped”, that is, existing requests are allowed to finish executing, and once they are all finished the AppDomain can unload. The new AppDomain starts with the new code and begins taking all new requests.

http://odetocode.com/articles/305.aspx
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,