====100分,用HttpHandler还是用HttpModule?====
对HttpHandler和HttpModule不是很熟悉,现在我想实现如下功能:
当用户请求形式如:/Info/Detail/*/*/*/*.aspx的时候,比如
/Info/Detail/2006/06/30/1584587.aspx,我首先判断该文件是否存在,如果不存在则创建,否则就直接访问该页面。功能类似与文件系统缓存。
我现在用了HttpHandler来处理,发觉文件已经创建了,但是访问该页面的窗口内容是空白的,如果把创建好的文件移动到其他目录,比如/Info/下就可以访问。后来我在MyHandler的ProcessRequest创建之后添加:
context.Response.Redirect(context.Request.Path);
也不行,会导致死循环加载~~
究竟应该怎么处理,还是应该使用HttpModule?
恳请各位给出思路,不够可以加分啊,路过的也请帮顶啊,顶者有分啊,谢谢谢谢!!!
------解决方案--------------------用HttpHandler,或HttpHandlerFactory。
------解决方案--------------------处理特定类型文件是用 HttpHandler 没错。
不过如果文件 /Info/Detail/2006/06/30/1584587.aspx 不存在的话,IIS直接返回404错误给客户端,不会把请求传递给aspnet_isapi.dll处理,也就不会传递给你自己写的HttpHandler的。
我看你的描述有点奇怪。
------解决方案--------------------同意Eri(阳光下的阴影)
但 *.aspx如果不存在还是可以到HttpHandler的.
如果是其他就不行.因为*.aspx还是通过asp.net来解释的.
其他的就不行了.iis.直接报不存在了.
------解决方案--------------------用IO去判断。然后用server.transfer()去转向.
------解决方案--------------------cpp2017(慕白兄) ( ) 信誉:100 Blog 2007-1-5 0:36:03 得分: 0
但 *.aspx如果不存在还是可以到HttpHandler的.
如果是其他就不行.因为*.aspx还是通过asp.net来解释的.
其他的就不行了.iis.直接报不存在了.
-------------------------------------------
确实如此, 被一片文章误导了。
这个还是比较奇怪。
------解决方案--------------------你查看一下你生成的文件正确已否。
然后在Trace.axd里看看执行情况。