天天看点

asp.net与asp的session共享 及 asp的请求拦截

asp.net 与 asp 的session是无法直接共享的(底层的处理dll也不一样),要想互通session,只能用变通的办法:

一、asp.net -> asp 的session传递

a) 建一个类似SessionHanler.asp的页面,代码如下:

 大概功能,就是接收参数,然后按需要生成Session,最后重定向到真正的功能页面,这样其它页面访问Session时就有值了

b) 建一个asp.net页面,把需要传递的值,以参数形式提交到 SessionHanler.asp  (POST或GET方式都行),参考代码:

 二、asp -> asp.net 的session传递

反过来做即可,原理完全相同。

三、拦截asp请求

对于现有的asp项目,在不修改其asp源代码的前提下,如果需要对http请求加以拦截(例如:把拦截到的请求参数做些处理,再转发到其它子系统。同时不影响原来asp项目的正常运行),有二种做法:

a) 自行开发ISAPI 筛选器 ,然后在IIS里,把自己开发的dll加入ISAPI 筛选器

以及 一些ISAPI的开发文章,比如

b) 利用asp.net的HttpModule (环境:IIS7 /Asp.Net 4.0上 测试通过)

前提:Asp项目所用的应用程序池必须采用"集成"模式

先建一个HttpModule

 这里只是演示代码,我把所有请求的QueryString和Form参数都记录了下来。

web.config中修改配置

 注:IIS7及以上版本,自定义的HttpModule,必须加到 system.webServer节点下,否则只能拦截asp.net的请求,对asp无效

最后赠送一个asp调试的小技巧(自从asp.net出来以后,很多人估计象我一样,已经很久不碰asp,这些小技巧差不多忘记光了,贴在这里备份一下)

IE浏览器里先去掉 友好错误的勾选

asp.net与asp的session共享 及 asp的请求拦截

IIS设置里,允许发送详细错误到客户端

asp.net与asp的session共享 及 asp的请求拦截

这样,asp代码出错时,就会显示详细信息了

asp.net与asp的session共享 及 asp的请求拦截