配置win2003 server IIS的总结,为什么IIs的工作进程会在空闲时间释放的问题。同时学会了throw的真正含义,throw的真正含义就是导致程序停止,崩溃,很简单,网摘也有记录。
项目背景:242后期,别人写的代码出现问题,我测试中发现的。
当时在内存中设立了一个队列,用arrylist存放任务队列,但是经过一段时间后,发现队列中信息没有了,还以为是出现异常的原因,最后,在网友的帮助下,通过在Application_Start(),Application_End()内部写测试方法,最终找到了问题的答案。。
同时学会了throw的真正含义,以及什么情况下使用throw,加深了,try catch的理解,同时增加了对调试时日志的记录的重要性的认识。。
下面是我跟网友的聊天记录:
,多亏了昨晚你的提示,通过在Application_Start(),Application_End()记录日志来判断工作进程是否退出。经过多次测试,总结如下:(1)如果长时间没有操作网站,工作进程会自动退出,这时Application_End()会被调用,当然保存在进程中的队列信息就没有了。(2)如果点击网站后,网站出现异常,我写的代码没有做异常处理即没做catch,这时,网站也不会崩溃,仍然可以正常访问其它网页,估计是IIS采取了防护措施,在代码外部捕捉了异常。
我 22:17:49
IIS的应用程序池的属性有工作进程回收的时间设置。这个可以调,所以以后在开发程序时,一些重要的信息还是保存在数据库或文件中,否则,工作进程退出后,这些信息就没有了。。
我 22:18:47
否则,工作进程退出后,保存在内存中的一些信息就随着进程的回收或中断丢失了。。
也就是说,网站在IIS的工作进程回收的时间内没有访问的话,IIS会自动将网站重启咯
我12:02:35
网站在IIS的工作进程回收的时间内没有访问的话,不是重启,而是关闭。application_end方法会调用。直到有用户访问的话,再调用application_start()。
帮我调程序热心肠 12:02:28
哦哦哦
我是你的影迷 12:03:58
别人写的程序,把信息保存到内存中,一段时间发现这个信息没了,现在才找到是这个原因,我把回收的设置关闭了。现在就没问题了。
以下是参考文献:
http://winsvr.org/info/info.php?sessid=&infoid=39&page=4网站主进程退出
http://www.pxue.com/Html/1005.html
IIS增加了许多错误处理,比如如果I代码出现了异常,即时是throw,IIS会在最外部进行捕获,不会影响其他用户的访问,即程序不会崩溃。。。