posts - 283, comments - 10329, trackbacks - 112, articles - 5
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
   我在开发中,遇到了这个问题,所以把解决的方案给大家分享一下。希望对一些遇到同样问题的朋友有所帮助。

 ASP.NET 2.0是采用动态编译机制的了,也就是只要添加ASPX文件和相应的CS后台代码文件,不再需要进行编译,就可以运行了。

ASP.NET 2.0会去动态的编译进行。而这种带有“监控”色彩的机制虽然带来很多好处。

很明显的,要是app_code里的代码有变化、或者Bin目录里的文件有变化,Web.Config有变化,都会导致Application重启。这些都可以理解的。

不可理解的是“当有目录被删除时”时也会导致Application重启,这就会让Session失去了。我曾试图放到App_data里,以为App_Data是ASP.NET唯一的净地。结果让我失望了。在App_Data里,有“删除目录”的操作,同样会Application重启。

网上有好多人遇到这样的问题。有人建议是采用“进程外”的Session。但这种设置毕竟是有点麻烦的。我可懒得去动。具体的方法可以参考:http://www.cnitblog.com/seeyeah/archive/2007/01/20/22089.html

但我找到了另一种更好的变通的方式:
就是在应用项目的目录外面建一个“目录”,比如在C:\下建个MyWebTemp目录。
然后在IIS里的应用项目里建一个“虚拟目录”指向这个“C:\MyWebTemp”上。
然后记住要把足够的权限给赋上,比如:IUSR_XXXX,NetWork等赋上读写权限。

现在好了,你可以在你的应用项目里,对"./MyWebTemp"的目录进行文件操作了。添加子目录、删除子目录都无所谓了。

其实原理很简单的,就是ASP.NET会对应用项目的目录结构进行监控,一旦有“目录删除 ”就重启。那么,只要MyWebTemp不在他的目录结构监控范围里就可以了。

这种文法比较简单,可能不是最佳的方案,不过能应付就可以了:)希望能有更简单、易行的方案出来。

Feedback

#1楼   回复  引用  查看    

2008-01-08 17:23 by KidYang      
这种方式会产生对项目之外的目录结构的一种依赖,貌似有点混乱。

不过应该是种巧方法,谢谢楼主,学习了:)

#2楼   回复  引用  查看    

2008-01-08 17:50 by PerfectDesign      
我觉得楼主面临的真正困难是Session的数据没有持久化,导致当网站重启,内存的数据丢失。如果考虑2个问题:持久化Session内数据,还有使用自定义的SessionID cookie来做系统,就没有这样的烦恼了。
不过有没有必要持久化是个问题。

#3楼   回复  引用  查看    

2008-01-08 18:46 by 韩现龙      
关于Session丢失的问题:
配置进程外Session麻烦么?
直接配置Web.Config文件中这个配置节



将其Session的默认存储位置mode="InProc"修改成StateServer或者SqlServer的存储方式即可。
//InProc:将Session保存至asp.net进程中
//StateServer:将Session存储于状态服务器中,一般设置为本机即可
//SqlServer:将Session存储于SqlServer中,一般这种方式可以实现不同域名的站点的Session共享。

不过有一点,如果在Session中保存了某个类的实例,则该类必须标记不可序列化的。

#4楼   回复  引用  查看    

2008-01-08 18:50 by Ariel Y.      
我替楼主说一句:2、3楼都跑题了~~~

#5楼   回复  引用  查看    

2008-01-08 18:54 by 韩现龙      
@Ariel Y.
嗯。我忽然也发现自己跑题了。:(

#6楼   回复  引用  查看    

2008-01-08 20:24 by BirdsHover      
2008已经改变这种方式了,可能MS也感觉不合理

#7楼   回复  引用  查看    

2008-01-08 20:25 by PerfectDesign      
@韩现龙
哈哈,都是我的错

#8楼   回复  引用  查看    

2008-01-08 22:00 by 一叶小舟      
谢谢楼主的分享,学习中。。。。

#9楼   回复  引用  查看    

2008-01-09 08:55 by 韩现龙      
@PerfectDesign
不是你的错,是我太大意了,没太仔细看帖子。
asp.net2创建删除目录、文件都会引起应用重启的

#11楼   回复  引用    

2008-01-09 09:33 by playboyzys12[未注册用户]
恩.曾与楼主遇到同样的问题,后来也是选择这样的方法解决了.

#12楼   回复  引用    

2008-01-09 13:22 by flyboy[未注册用户]
这页面有木马!!!???
打开杀毒软件会叫

#13楼   回复  引用    

2008-01-09 14:41 by longer[未注册用户]
有VBSCRIPT脚本木马,这页

#14楼   回复  引用    

2008-01-09 14:42 by longer[未注册用户]
Trojan.DL.Script.VBS.Small.fc

#15楼   回复  引用  查看    

2008-06-03 08:50 by Goumh      
谢谢分享,学习中......

#16楼   回复  引用  查看    

2008-11-19 16:38 by 寒天      
很好 多谢分享 学习中。。。



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1030721 lCN40Hv1OvA=




相关文章:

相关链接: