您的位置:首页 > Web前端 > CSS

关于HttpModule中像图片,*.css,*.js等资源文件也被请求问题的解决

2010-06-01 11:39 1226 查看
出现这样的一个问题,就是像图片,*.css,*.js等文件被请求了,或静态的*.html,导致程序代码出错
(一)可能出现的现象
(1)首次访问测试页面Test.aspx能跳转到Login.aspx页,但是Login.aspx页面中的图片不能加载,并且报js错误(Login页面中有简单的js判断语句),请问各位大大是什么原因造成的啊
(2) if (context.Session["userId"] == null || context.Session["userId"].ToString().Trim() == "") 将出现“未将对象引用设置到对象的实例。” 主要是HttpModule处理.aspx后,还要处理资源文件,第二次执行Session就为空了,如果处理的*.apx页面中没有资源文件,就不会出现第二次请求了。
(3)这也是为什么有人问,好像死循环了,页面被重复执行了,是的,就是因为你页面有资源文件所导致的。
(二)原因
(1)Http模块必须是IIS将请求调度给 aspnet_isapi.dll ISAPI 扩展后才能发挥作用,默认下图片、CSS、JS等请求IIS都是直接返回的,并不给aspnet_isapi.dll处理,Http模块就不会发生作用。
(2)你用iis访问页面就不会过滤图片,js,css 了发布到iis后,图片,css,js就都不会经过httpmodule了,如果你是用vs的 developmentserver 请求 那图片还有css,js会有问题,httpmodule只拦截那些在iis应用程序配置中项关联的后缀文件,像aspx,asmx,ascx

(三)解决办法(参考了下网上的资料)
(1)有上面的原因,可以知道解决的办法,就是发布后,而不是开发环境( developmentserver 请求 )。直接用IIS即可。
(2) HttpModule默认处理aspx页面没有问题,但是如果在IIS上配置html也通过HttpModule处理时会出现死循环无法跳出html页面的问题,在web.config上加上<add verb="*" path= "*.htm" type= "System.Web.StaticFileHandler"/></httpHandlers>
可解决。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/Joetao/archive/2010/01/23/5249309.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  文件 css 请求
相关文章推荐