server.Transfer().............执行子请求错误 求教各位大虾啊~~~~

致知Fighting 2011-03-30 01:02:50
最近尝试用 ihttpHandler 实现请求拦截,验证权限,但是总是出错没有成功。

思路:请求————ihttpHandler(验证用户角色,并确定有没有权限访问要访问的页面)————验证成功在服务器转发请求到对应的页面


public void ProcessRequest(HttpContext context)
{
HttpSessionState session = context.Session;
HttpResponse response = context.Response;
HttpServerUtility server = context.Server;
HttpRequest request= context.Request;

if (session[CommonConstant.USER_NAME] == null)
{
response.Redirect("~/login.aspx");
}

String userName = session[CommonConstant.USER_NAME].ToString();
String userRole = session[CommonConstant.USER_ROLE].ToString();

if (!userRole.Equals(CommonConstant.STUDENT))
{
ExceptionReturnObject ero = new ExceptionReturnObject();
ero.ExceptionMsg = "您没有当前操作的权限,请联系管理员";
ero.ExceptionNum = CommonConstant.RIGHTEXCEPTION;
ExceptionHandler.exceptionHandler(ero, session, response);
}

server.Transfer(request.Path, true);
}


处理请求的代码如上,但是通过验证后的跳转代码总是在报错server.Transfer(request.Path, true);报执行子请求时错误

我在网上找了很多类似的问题,但是都没有解决。
context.Server.Transfer(BuildManager.CreateInstanceFromVirtualPath(context.Request.Path, typeof(Page)) as IHttpHandler, true);


用这个代码可以不报错,但是这样就会丢失请求数据,时受保护的页面都异常:连按钮都没有反应。

求教大虾们了~~~~怎么解决这个问题!!!!
...全文
165 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
致知Fighting 2011-04-07
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 wxr0323 的回复:]

要坚强。。。。。。
[/Quote]

。。。这是落井下石啊!!

最后还是换了一种方式,用ihttpmodule了
子夜__ 2011-04-03
  • 打赏
  • 举报
回复
要坚强。。。。。。
子夜__ 2011-04-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 ygycomon 的回复:]

我都快哭了。。。为什么没有人来回答这个问题啊!!!!!
[/Quote]
哭啥。哈哈
办法是想出来的。
致知Fighting 2011-04-02
  • 打赏
  • 举报
回复
自己顶。。
致知Fighting 2011-04-02
  • 打赏
  • 举报
回复
我都快哭了。。。为什么没有人来回答这个问题啊!!!!!
致知Fighting 2011-04-02
  • 打赏
  • 举报
回复
求救啊~~~~~~~~~~
Y_DAQ 2011-04-02
  • 打赏
  • 举报
回复
up

同求!
致知Fighting 2011-04-01
  • 打赏
  • 举报
回复
怎么没有人啊。。。。。。。。。。。。。。。
致知Fighting 2011-03-30
  • 打赏
  • 举报
回复
难道是我解决问题的思路不对吗???

这样写总是会出问题
致知Fighting 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dingzongyinnihao 的回复:]

如果没错的话,你直接这样写

server.Transfer(request.Path);
[/Quote]

同样不对,我试过的
  • 打赏
  • 举报
回复
如果没错的话,你直接这样写

server.Transfer(request.Path);

致知Fighting 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cjh200102 的回复:]

request.Path是上次请求的路径?
调试下看是否正确。
[/Quote]

对,是上次请求的路径,路径是没有错的,我调试过
cjh200102 2011-03-30
  • 打赏
  • 举报
回复
request.Path是上次请求的路径?
调试下看是否正确。
致知Fighting 2011-03-30
  • 打赏
  • 举报
回复
没人啊???

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧