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

   这段时间学习HttpModule,用HttpMoudule写了一个判断权限登录的模块,网上很多,这里不介绍了。我写的代码如下

  

 

但出现这样的一个问题,就是像图片,*.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>

可解决。

 

个人意见仅供参考,希望给那些跟我碰到一样问题人带来点帮助!请大家指正

参考网址 http://www.cnblogs.com/qiufankaka/archive/2009/09/14/httpmodule.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值