请教诸位高手们:因为以前一直用的是2000,因此没有遇到过这样的情况。但现在换了server 2003,问题来了...作了一个web application的Project,然后在Grobal.asax.vb中的Application_Start中写了一些关于Server.mappath的方法(主要是要做一些日志文件和JS文件操作之类的工作),系统运行一段时间之后,在一般的操作中会黄屏,发现JS文件找不到或者日志文件读写之类的出错,查了半天找不到原因(系统中没有找到对Server.mappath进行操作的语句)某天灵机一动,在Application_Start下加了一些语句,让她每次重启都记录一下Server.Mappath,结果发现5天之后,里面陆续找到十几条记录,而最后一条的Server.Mappath(""),居然跑到了一个子目录中去了..大寒,这样的话不错才怪。继续弄下去,总结了一些经验,有时候系统发生黄屏,就会触发Application_Start,如果这时候正好有别的浏览器处于系统子目录,就会导致以上的问题发生但是..这实在是没有道理的阿,难道Application_Start真的会多次启动吗?难道Server.MapPath真的会出错吗?(据某些人的说法是,2003有了新的垃圾收集机制,会把Application也收集掉,大寒ing...)请教诸位高手们,有什么不让Application多次启动的方法呢,或者说,有什么能定死Server.MapPath的方法呢?不过如果实在行就算了,干脆再作一个Config文件,但始终觉得不能用Server.MapPath挺可惜的。

解决方案 »

  1.   

    web.config作为配置文件弥补了Grobal很多问题
    我个人认为使用web.config比较好
      

  2.   

    好了,谢谢帮助,刚刚察看了记了一上午的日志,然后基本上找到了让Application多次启动的原因...因为每次Aspnet_wp的内存耗用超过300M,系统会自动重启,2003果然强劲但对于Server.MapPath被改掉的原应,依然没有头绪,就算多次重启,也不应该有改变不是吗?
      

  3.   

    如果把查询出来的数据DataSet直接扔在Session里,然后这样的窗体开他十几个,每个字段中都包括有CLOB大对象,每个大对象里都有十几兆的,这样的记录来他个几十条,这样的查询开他个十几个..300兆,这个系统我觉得已经做得不错了...
      

  4.   

    在刚刚的调试中终于明白了这个问题
    每次Application_Start的时候,系统都会自动重新设置Server.Mappath这时候第一个访问系统的页面的目录会被设置成Server.Mappath(XP pro 和2003都是这样的,别的系统还没有试)看来还是我的理解有问题
    微软的原话是“MapPath 将返回包含当前应用程序的目录的完整物理路径。”
    也只是包括...包括而已...寒中
      

  5.   

    应该用Server.Mappath(".")吧。这样会精确的指向当前执行的叶面。另外,2000同样存在你说的Proc自动重新启动的问题。参数可以在machine.config中设置。