3. 回收工作线程
设置IIS定期清除Work process是避免此异常的一个较好的方式。但这个功能是IIS 6.0(也就是Windows 2003上带的IIS)才支持。
配置方法如下:
修改IIS的应用程序池配置,选择DefaultAppPool(如果你的系统是用这个池),右键点属性->Recycling Setting,然后选择根据情况 修改“Recycle worker processes at the following times:'等几项配置,其中定时回收工作进程是一个比较好的方式,可以避免回收工作进程时,引起客户Session丢失。
Windows 2000 server 上安装的是IIS 5.0,本身不支持Recycle,但要想实现这个功能也不难。微软针对IIS提供的IIS5Recycle便是这样一个程序,它安装后以服务形式提供回收工作进程。
安装说明见http://support.microsoft.com/?id=322350
图片是表示安装好之后的配置信息! 是不是和IIS6中的一模一样?
代码编写方面的注意问题
1.System.Drawing方面的类使用问题
System.Drawing用到了很多系统的资源和非托管代码,所以使用的时候要特别小心,注意内存泄漏(Memory Leak)例如:BitMap.MakeTransparent方法的使用问题:
http://www.dotnet247.com/247reference/msgs/40/202528.aspx
2.new byte[]问题
处理流的时候常常会用到new一个大的byte数组。但在多用户情况下会消耗大量的内存。正确的做法应该是定义一个比较小的byte数组做为缓存,然后循环使用。如在我们的程序中,有些地方使用不当,当图片(或附件)过大或过多的时候, new byte[length]就有可能消耗过多的内存。
3. 避免使用大对象数组或小对象大数组
编程时同样要重视效率问题(包括内存占用问题)。
4.Com接口调用是要注意释放对象。