烈火建站学院(LieHuo.Net)服务器管理 自从ASP.NET 2.0诞生就给我们项目带了一个很严重的问题,删除文件和目录会触发ASP.NET应用程序重新启动。直到ASP.NET 3.5一直认为微软会解决这个问题,解决发现还是没什么希望。ASP.NET 3.5只是采用了新的机制让在处理的线程不会中止,但下一个新的请求将会创建一个新的应用程序域,现有的应用程序域将维持到现在和在队列中排队的请求处理后再销毁。变相解决了应用程序重新启动给客户端带来的不快,但是也没有解决会话状态变量丢失的问题。
在进行ASP.NET 2.0应用程序开发的时候,项目组采取的不办法如下:
在Web应用程序目录外创建临时文件夹;
在IIS中将临时文件夹创建为虚拟目录;
在Web应用程序中添加虚拟目录指向临时文件夹的物理地址。
这样做有一个缺点,就是需要在配置文件中记录临时文件夹的应用程序路径(~/Temp)和物理路径(c:\temp);因为文件读写需要物理路径,而文件在IE中直接表示需要应用程序路径转换为相对URL路径。还有,这个解决方法因为没有在系统级别解决问题,所以在我们使用VS2005宿主应用程序时就无法进行调试。
今天看了老外一篇文章,发现Windows Resource Kit中居然有命令行工具可以解决这个问题,此工具名为linkd使用方法如下:
linkd c:\temp c:\wwwroot\webapp\temp
这样当你访问c:\wwwroot\webapp\temp或进行读写的时候,直接反映到c:\temp目录中,而且因为系统监视程序监视的实际物理路径而不是映射路径所以不会引起ASP.NET应用程序重新启动。
这样就可以解决在VS宿主下的调试问题。