windows2008 R2 + iis7 + .net framework4.5
系统功能是客户传递来的大文件,经过一些列计算、分解、切割、组装等工作后分解成多个小文件并存储到各个特定目录里由于传过来一个大文件需要切割成非常多的小文件,所以我用了多线程存储,但如果线程数较多(超过80),应用程序池会有重启现象(Application_End会被执行),这时我内存中还没有来得及处理的小文件就没有了,但如果线程数设置的太少,又跟不上速度,请问大侠们这是怎么回事啊

解决方案 »

  1.   

    asp.net和IIS本来就会自动重启应用程序池,这是一种正常的维护机制。如果你的程序不适合asp.net程序,那么你应该使用console或者windows service,而不是asp.net。
      

  2.   

    难道没有方法让我自己管理内存等,让asp.net 不要自动重启吗?
      

  3.   

    比如说当连接数累计达到一点数量,比如说当物理内存使用到一定比例,比如说cpu占用达到一定比例,比如说达到IIS默认的回收应用程序池的分钟数,比如说你网站下的web.config文件、或者bin下的文件被改变了,或者你删除了一个目录,比如说进程遇到了严重的运行异常,或者......总之无数的可能性,IIS都会重启你的asp.net进程。这是一个正常的维护模式。因为asp.net不过就是一个前端小程序,不是用来独立做服务的,而是用来提供用户访问的。它的主旨是保证在一个很低档的机器上,成千上万用户可以并发访问网页,一年365天每天24小时都有用户访问,如果遇到问题就会立刻自动重启。因此asp.net程序就是干这个用的。如果你有重要的服务,那么你应该单独去开发专门的服务进程、去高强度地测试。不要跟开发asp.net网页应用程序搅在一起。asp.net就是提供哪些水平较低的开发人员来做简单的web应用网页用的。