开发调试环境VS2005,ASP.NET2在Global.asax文件中我对某些事件进行了自己的处理。然而我的这些处理当然只针对aspx页面。然而调试的结果却是,访问任何文件,比如:css、js、gif等文件,调试发现都进入了Global.asax的所有事件中处理,这样自然会出错。
举个简单的例子,比如:
访问这样的页面Default.aspx?id=123,我在Global.asax文件中将会根据id查询数据库(如果没有id就默认id=0),这样的话访问Default.aspx?id=123就会查询很多次数据库,严重浪费资源。
而且,我是如果id不满足一定要求的话,将会转到错误页面。这样的结果就是,我访问Default.aspx?id=123页面,这个页面中的所有css、gif等文件都没能加载,因为在Global.asax的处理中,对于页面上的css、gif、js等文件,处理没有找到id就会默认其为0,就会转到错误页面。加载的就不是css、gif、js文件本身。不知道大家看明白我的问题没有?我想了很久了也没找到解决办法,请求帮助,谢谢!

解决方案 »

  1.   

    如何在web.config中或其它地方设定,只有对aspx页面的请求,才执行global.asax中的事件?
      

  2.   

    倒,看了好半天你的问题,纳闷啊。你杂这样捏。不知道你杂搞的,为什么要把访问Default.aspx的处理ID的查询的放到Global.asax文件中呢。没必要啊。这样非常不好,汗。你直接在Default.aspx后台进行判断不就得了
      

  3.   

    TO: hackate,我只是举个例子,说明情况,并不是我就是这样做的。
      

  4.   

    尚未用過VS2005,ASP.NET2
    關注中
      

  5.   

    其实我就是在Application_AuthorizeRequest中进行用户身份及角色验证和确定。这也要查询数据库的。和上面的例子差不多的呀。
      

  6.   

    若是上面的情況,你就僅一次查出(TABLE)放入一個SESSION,直接到這個SESSION中找,會不會減輕點負擔?
      

  7.   

    >>>访问任何文件,比如:css、js、gif等文件,调试发现都进入了Global.asax的所有事件中处理,这样自然会出错agree with hackatebut css/js/gif should be served by IIS directly, and should never enter your ASP.NET process, did you re-map them to aspnet-isapi.dll?
      

  8.   

    谢谢 saucer(思归) 
    我没有作任何映射,上面是利用vs2005调试时出现的问题。如果直接放在服务器的IIS运行,则访问css、js、gif文件不会进入我的Global.asax中的事件。我现在的做法是,在web.config中增加自定义配置,指定哪些文件可以进入Global.asax中的事件,然后在Global.asax判断,可以解决这个问题。但不知道我的这个方法好不好,谢谢指点!