windows7以及windows2008下,iis7中isapi filter的加载简介

来源:互联网 发布:阿里云怎么修改镜像 编辑:程序博客网 时间:2024/05/21 15:12

在微软的新一代操作系统中,iis的版本也进行了升级,由原来的iis6升级到了iis7。其中,win2008中是iis7.0,win7中是iis7.5,win2008R2版中是iis7.5。

 

在iis7中,如果你想开发isapi filter的话,那么微软建议你改为开发iis的模块(module),模块是微软从apache学来的,现在用到了自家的iis上。未来的iis会朝着模块化方向发展。用.net的framework来开发iis模块,应该是最方便快捷的了。

 

但如果你想让过去在iis6下工作的isapi filter继续在iis7下工作,那么下面我介绍一下我的心得。

 

1.按照微软的David Wang在其博客中的说法,想将iis6下的isapi filter移植到iis7下,只需要一步,就是将你的isapi filter加载到iis7中。如果你很幸运,加载上就能成功运行,那么恭喜你了。如果你发现不能正常工作,那么请往下看。

 

2.在iis7的顶层目录下,打开”isapi和cgi的限制“项目,把你的isapi filter的dll添加到里面,允许其运行。

 

3.打开module项目,确认里面有IsapiFilterModule模块,它的路径为“c:/windows/system32/MSVCR71.DLL”。另外,  确认存在IsapiModule模块,它的路径为“c:/windows/system32/MSVCR71.DLL”。

 

4.确认你存放isapi filter的dll的文件夹有执行的权限,如果没有,添加权限给它。

 

因为在iis7中没有iis6中提示isapi filter加载是否成功的绿色小箭头,你无法直观知道dll加载成功了没有,只能通过ie访问web通过现象来确认。如果上述步骤后还是不行,那么请接着往下看。

 

5.将你的dll分别加载到web站点级别上和最顶级上,看看是否都不能用。有人发现,在安装了exchange2008后,dll加载到最顶层上后,下层的web站点无法继承dll,所以失效。

 

上面只是一些基本的方法,而且仅仅是一小部分值得注意的地方,还有很多很多需要各位自己去探索。反正我经过上面的5步后,我的isapi filter依然在iis7中毫无反应!经过了将近一个星期的冥思苦想,我最终发现了问题,这就是第6点,本文最重要的部分。

 

6.使用vc6下提供的工具-Dependency Walker,查看isapi filter的dll需要用到哪些别的dll,在xp下有的dll在win2008下未必存在。如果发现有缺失的dll,那么问题就找到了,将缺少的dll从xp下拷贝到win2008的system32目录下就ok了。

 

Dependency Walker中,黄色问号代表此模块找不到,红色叹号代表非法模块,粉红色小窗口代表模块里包含找不到的函数。

 

先说这么多,加载成功后,其它功能也很可能出现问题,需要进行仔细测试。

原创粉丝点击