现在的位置: 首页 > 综合 > 正文

ISAPI Filter开发入门

2013年03月20日 ⁄ 综合 ⁄ 共 1251字 ⁄ 字号 评论关闭
Filter的主要功能就是在IIS向用户发送网页的时候,利用filter种的过滤功能,对Data的内容进行一定的修改,然后将修改后的内容进行发送给用户。
例如Filter01中就是对发送的网页进行检测,如果网页的内容里面包含有Hello字段,那么就对内容进行修改,将修改后的内容发送给客户端进行显示。

每个filter都是编译成一个DLL文件,然后将该DLL文件存放到D://目录下(也可以放到任意目录下,只是在IIS站点属性的ISAPI Filter中能找到相应的位置就好)。

为了测试结果,可以在IIS中新建一个站点,指定相应的端口号(如16000),然后在站点的内容中添加我们需要过滤的内容,然后打开网页,(http://localhost:16000/)查看不过滤的时候,正常显示的内容。

要查看过滤后的内容:在IIS相应站点的属性-》ISAPI Filters中添加一个Filter,该filter就是我们前面保存在D://目录下的相应DLL文件;在Documents标签下的Add,添加default.html,添加之后点击Apply。
然后打开网页(http://localhost:16000/default.html)可以查看是否能实现过滤的功能。显示出来的就是过滤后的内容(显示出来的内容是在FilterContext中的函数里我们构造的内容)。

注:此时在ISAPI Filter中可以查看到filter的Status为一个绿色的上升箭头。


在编写自己的Filter的时候,
首先新建一个C++工程:在Net环境中选择Visual C++下面的Win32,然后在右边选择“Win32 Console Application”,建立一个Empty Application。
完成后,在右侧的Solution Explorer中的Source Files中点击右键,
选择“Add”-》“new Items”,然后选择“Visual C++-》Code-》C++ File(.cpp)”,新建一个空白的文件,把程序写到里面。
一般DLL中的函数是无法被外界使用的,除非被Export以后的函数才可以被外界使用,导出的方法:
新建一个.def文件,同样点击:
在右侧的Solution Explorer中的Source Files中点击右键,
选择“Add”-》“new Items”,然后选择“Visual C++-》Code-》Module-Definition File(.def)”, 然后在里面添加如下内容:
“EXPORTS
 GetFilterVersion(需要导出的第一个函数的名字)
 HttpFilterProc(需要导出的第二个函数的名字)
依此类推……”

最后记得点击“该工程右键,选择属性一栏,一般需要将Character Set的值修改为:Use Multi-Byte Character Set“。
之后就可以编译生成DLL文件了。
 

抱歉!评论已关闭.