网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP > 正文
Response.Redirect在新窗口打开的另一种方法
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/11/25
下载{$ArticleTitle}原创论文样式

  这里介绍Ihttpmodule处理请求管道的方法。Response.Redirect的原理是服务器设置返回http状态码为302,然后客户端执行跳转,用reflector可以看到.net的代码段。

  以下是HttpResponse类的Redirect方法中的跳转代码

this.StatusCode = 0x12e;
this.RedirectLocation = url;

  所以,我们可以扩展Ihttpmodule来拦截http状态码,强制设为200,同时插入js代码段来实现新窗口打开。以下是Ihttpmodule的实现代码

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
namespace ClassLibrary2
...{
  public class Class1:System.Web.IHttpModule
  ...{
    public void Init(HttpApplication application)
    ...{
      application.PreSendRequestHeaders += new EventHandler(application_PreSendRequestHeaders);
    }
    void application_PreSendRequestHeaders(object sender, EventArgs e)
    ...{
      HttpApplication Application = (HttpApplication)sender;
      HttpContext context = Application.Context;
      if (context.Response.StatusCode == 302)
      ...{
        context.Response.Write("<script>window.open('"+context.Response.RedirectLocation+"')</script>");
        context.Response.StatusCode = 200;
      }
    }
    public void Dispose()
    ...{
    }
  }
}

  最后配置一下web.config就可以了

<?XML version="1.0"?>
<configuration>
  <system.web>
    <compilation debug="true"/>
    <authentication mode="Windows"/>
  <httpModules>
   <add name="MyModule" type="ClassLibrary2.Class1,ClassLibrary2"></add>
  </httpModules>
  </system.web>
</configuration>

  另外一点,ms自坐主张的在跳转之后,end之前插入了这么一段代码,我得b4他们一下,解决办法,大家自己想想吧。

this.Write("<html><head><title>Object moved</title></head><body> ");
    this.Write("<h2>Object moved to <a href="" + HttpUtility.HtmlAttributeEncode(url) + "">here</a>.</h2> ");
    this.Write("</body></html> ");

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号