ihttphandler 拦截后如何继续 request 请求

问题描述

刚学.net时间不长,用ihttphandler做一个访问权限统一管理的东西publicvoidProcessRequest(System.Web.HttpContextcontext){if(System.Web.HttpContext.Current.Session["user"]==null){context.Response.Redirect("~/index.aspx");return;}}用调试看发现这个方法跑完了,而且session里确实有东西,但奇怪的是这个方法跑完调试貌似结束了,然后网页上什么也没有,就像ihttphandler把request请求拦截下来后就hold住了,并没有往真正的request指定响应者继续转发请问各位怎么做才能让ihttphandler把request继续转发下去

解决方案

解决方案二:
sf被抢到啦context.Response.Redirect("~/index.aspx",false);楼主好好看看Redirect里面传的参数再做这个!!要不会很麻烦的哦!!!
解决方案三:
好似不能这么做。HttpHandler拦截所有请求,包括redirect的请求。这样就会产生无限循环情况。可以考虑使用HttpModule拦截部分请求。我就是这么做的。
解决方案四:
二楼:session为空的时候能正常转发到index.aspx,不为空就没法继续了,再加上个redirect的话就跟三楼说的一样死循环。。。三楼:用ihttpmodule另外继承了IRequiresSessionState没办法用application.Context.Session或者System.Web.HttpContext.Current.Session访问session,都提示未将对象引用设置到对象的实例,我的项目用的是ajaxenable的,用ihttpmodule网页上有找不到sys的错误
解决方案五:
ihttphandler会死循环,ihttpmodule又不能访问session。。。哪位大虾有解决办法啊
解决方案六:
还是用Cookie吧:我查了很多中英文资料,好像只能这么做了。因为HttpModule是可以对任何文件访问都有效的。而访问的文件可以不是asp.net文件,这样就没有解析session的机会。如果有本事可以解析这个cookie:HttpContext.Current.Request.Cookies["ASP.NET_SessionId"];

不过即使做出来了我也会反对。最好不要用没有公布的方法。所以我建议还是用cookie。如果有其他方法我也想听听。
解决方案七:
有点不甘心昨天看了篇帖子提到了Server.Execute("xx.aspx")这个命令,想到是不是能够在ihttpmodule里去调用xx.aspx让后让xx.aspx做权限管理,aspx是能够直接访问session的在loginCheck.aspx里<%@PageLanguage="C#"EnableSessionState="True"AutoEventWireup="true"CodeFile="loginCheck.aspx.cs"Inherits="loginCheck"%><%if(Session["user"]==null){Server.Transfer("~/index.aspx");return;}%>页面提示异常详细信息:System.Web.HttpException:只有在配置文件或Page指令中将enableSessionState设置为true时,才能使用会话状态。还请确保在应用程序配置的<configuration><system.web><httpModules>节中包括System.Web.SessionStateMod或自定义会话状态模块。google了一下在httpmodule里添加了session部分,在system.web/pages里添加了enableSessionState部分,问题依旧奇怪的是在webconfig里把这个ihttpmodule的配置注释掉,直接访问loginCheck.aspx能通过,而且有效果。。。。一旦把它作为ihttpmodule就歇菜了。。有没有人碰到过这个问题
解决方案八:
我也遇到了,请问这么楼主你找到解决方案了没?
解决方案九:
我也遇到了..顶上去..希望有高人出来解决一下..
解决方案十:
顶一下也看过httphandler,但是没有做过跳转页给我两分我就4个裤衩
解决方案十一:
有这么复杂吗?是不是我看题看错了?if(context.Session["user"]==null&&context.Request.CurrentExecutionFilePath.ToLower().IndexOf(context.Request.ApplicationPath.ToLower()+"/index.aspx")==-1){context.Response.Redirect("~/index.aspx");}

解决方案十二:
呵呵,我碰到过这个问题,解决办法如下:Web.Config中添加如下:<addverb="*"path="*.aspx"type="myHttpHandler"validate="true"/>publicclassmyHttpHandler:PageHandlerFactory,IRequiresSessionState{publicmyHttpHandler(){////TODO:在此处添加构造函数逻辑//}publicoverrideIHttpHandlerGetHandler(HttpContextcontext,stringrequestType,stringvirtualPath,stringpath){//进行预先处理的代码returnbase.GetHandler(context,requestType,virtualPath,path);}}

解决方案十三:
该回复于2008-05-09 11:19:15被版主删除
解决方案十四:
我也刚好遇到这个问题,查阅了好久的资料终于解决了。首先实现IHttpHandlerFactory和IReadOnlySessionState接口,其中IHttpHandlerFactory的成员方法GetHandler这样实现:publicIHttpHandlerGetHandler(HttpContextcontext,stringrequestType,stringurl,stringpathTranslated){PageHandlerFactoryfactory=(PageHandlerFactory)Activator.CreateInstance(typeof(PageHandlerFactory),true);IHttpHandlerhandler=factory.GetHandler(context,requestType,url,pathTranslated);Pagepage=handlerasPage;page.Init+=newEventHandler(page_Init);returnhandler;}voidpage_Init(objectsender,EventArgse){//直接可以使用HttpContext.Current.Session}
解决方案十五:
我也遇到了同样的问题楼上的好像都没有实质解决啊期待高人

时间: 2024-11-02 23:37:53

ihttphandler 拦截后如何继续 request 请求的相关文章

数据-Android 登入成功后再发送任何请求都报错

问题描述 Android 登入成功后再发送任何请求都报错 用其中一个帐号登入是没有任何问题的,但是切换到其它帐号之后登入进去 ,再发送请求 获取数据数据的时候就会报错, 切换回那个帐号后又没问题 大家来帮我分析分析 报错内容: Caused by: org.springframework.web.client.HttpClientErrorException: 400 Bad Request 解决方案 如果只是账号不一样引起的异常,更像是账号的权限引起. 解决方案二: token改过来了吗?

服务器-node如何在服务端解析request请求的数据

问题描述 node如何在服务端解析request请求的数据 我想做成这个效果:当用户在客户端点击链接后,服务器端可以通过request请求的报头中的 useragent分析出该用户的一些信息,由于刚刚学,不太会,希望大神们不吝赐教,非常感谢. 解决方案 request.headers['user-agent'] 解决方案二: useragent能分析出来的信息不多,而且它很容易伪造.一般可以大致知道用户的浏览器类型.操作系统类型.http://www.cnblogs.com/langtianya

网址被QQ拦截后的快速解除方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 QQ是个多元化的应用平台,拥有庞大的基础用户群体,任何腾讯旗下的新兴的网络应用都会得到一大部分QQ用户的认可,正因如此,QQ应用平台早已成为网站推广的理想选择. 为了营造"良好"的网络环境,QQ的监测系统也在日夜不停的扫描着这个庞大应用系统,推广过程中网站地址被QQ拦截的事情时有发生,一旦网址被拦截将意味着可能在腾讯任何产

request请求获取参数的实现方法(post和get两种方式)_javascript技巧

提交表单代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>测试请求参数</h1> <!-- 注意href和action都是写的完整的名称:项目名和资源路径名 --> <!-- 下面一句

interceptor-spring中使用Interceptor拦截器,如何在拦截器中获取页面请求后台的方法的结果集?

问题描述 spring中使用Interceptor拦截器,如何在拦截器中获取页面请求后台的方法的结果集? spring中使用Interceptor拦截器,如何在拦截器中获取页面请求后台的方法的结果集? 解决方案 你可以在拦截器内获取访问的URL,自行判断 解决方案二: 获取页面请求后台的方法的结果集 什么意思?

java struts1.2拦截后 不能执行查询 报NUll

问题描述 java struts1.2拦截后 不能执行查询 报NUll java.lang.NullPointerException at cn.yd.action.hrAction.LoginAction.execute(LoginAction.java:60) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) at net.sf.struts.saif.SA

window.open被浏览器拦截后的自定义提示效果代码_javascript技巧

现在越来越多的浏览器有拦截弹出窗口的功能.广告弹出来给拦掉了就无所谓,要是客户在付款时给拦掉了可就不能乱算了. Gmail的"哎呀"算是经典,可是,前天心云给出了更帅的提示=.= 记得打开浏览器拦截后 测试一下,在线阅读器里不知道代码会不会给过滤..代码在下边,其实没什么技术含量滴.挖哈哈... 复制代码 代码如下: window._open=window.open;  window.open=function(sURL,sName,sFeatures,bReplace){    if

VS2015启动运行后一直发送VsHub请求解决方案

原文:VS2015启动运行后一直发送VsHub请求解决方案    VS2015启动运行后,打开Fiddler监听接口调用实际请求,结果发现全部都是VsHub的请求(图1),想看到自己想要的请求非常难. 解决办法: 1.杀死VsHub.exe和Microsoft.VsHub.Server.HttpHostx64.exe进程. 2.把C:\Program Files (x86)\Common Files\microsoft shared\VsHub\1.0.0.0文件夹重命名. 注意:杀死进程后会自

PHP 中TP5 Request 请求对象的实例详解

PHP 中TP5 Request 请求对象 public/index.php <?php // [ 应用入口文件 ] // 定义应用目录 define('APP_PATH', __DIR__ . '/../app/'); // 定义配置文件目录和应用目录同级 define('CONF_PATH', __DIR__.'/../config/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php'; app\index\controller