最近将原来的系统迁移到IIS7.5上了,发现AspNetUpload只能运行在"程序程序池"的"经典"模式之下,采用"集成"模式后,AspnetUpload.GetUploadFile始终为null,虽然改成经典不影响系统运行,但是这种模式就发挥不出IIS7的优势了,相当于以IIS6的兼容模式在运行,不知道作者会不会改进。
以下是MDSN上的关于应用程序池"集成"与"经典"模式的解释:(http://technet.microsoft.com/zh-cn/library/cc753449(WS.10).aspx)
“应用程序池”是一个或一组 URL,它们由一个或一组工作进程提供服务。应用程序池为它们包含的应用程序设置了边界,这意味着在给定应用程序池外部运行的任何应用程序均不能影响该应用程序池中的应用程序。
应用程序池具有下列优点:
- 改进的服务器和应用程序性能。对于占用大量资源的应用程序,您可以将其分配给它们自己的应用程序池,以免影响其他应用程序的性能。
- 改进的应用程序可用性。如果一个应用程序池中的应用程序发生故障,将不会影响其他应用程序池中的应用程序。
- 改进的安全性。通过隔离应用程序,可以降低一个应用程序访问其他应用程序资源的几率。
在 IIS 7 中,应用程序池有两种运行模式:集成模式和经典模式。应用程序池模式会影响服务器处理托管代码请求的方式。如果托管应用程序在采用集成模式的应用程序池中运行,服务器将使用 IIS 和 ASP.NET 的集成请求处理管道来处理请求。但是,如果托管应用程序在采用经典模式的应用程序池中运行,服务器会继续通过 Aspnet_isapi.dll 路由托管代码请求,其处理请求的方式就像应用程序在 IIS 6.0 中运行一样。
大多数托管应用程序应该都能在采用集成模式的应用程序池中成功运行,但为实现版本兼容,有时也需要以经典模式运行。应该先对集成模式下运行的应用程序进行测试,以确定是否真的需要采用经典模式。