之前一直没做过服务器插件,前段使用用到这个技术,写出来供像我一样的新手看看。
作IIS服务器插件可以使用microsoft 提供的ISAPI FITER(过滤器) 和ISAPI EXTENSION(扩展)两种方式,
开发方式都差不多,这里只介绍ISAPI EXTENSION.
我用的是vs2005开发,很多人都问vs2005或以上版本没有像vc6那样的创建ISAPI 应用程序的向导怎么办,
MSDN介绍ISAPI的文档提到入口点函数(entry-point function),研究了下,觉得如果以dll形式提供插件,
应该就是利用vs2005创建一个动态链接库项目进行那几个入口点函数重写的过程吧。
于是新建一个dll工程,在dll.cpp定义msdn提到的那几个入口点函数:
1.BOOL WINAPI GetExtensionVersion( HSE_VERSION_INFO *pVer )
{
//这里可以把版本信息写入pVer结构体。
//最后返回TRUE,如果返回FALSE,IIS不会加载该插件。
}
2. DWORD WINAPI HttpExtensionProc( LPEXTENSION_CONTROL_BLOCK lpECB )
{
//这里写你的程序主体代码,一般会用到lpECB结构内的数据和函数,
//如lpEBC->GetServerVariable,lpEBC->WriteClient等
//如果使用同步方式读写数据,处理完成后可以返回 HSE_STATUS_SUCCESS
//如果使用异步步方式读写数据,调用WriteClient后可以返回 HSE_STATUS_PENDING,这时需要使用
ServerSupportFunction函数设置回调函数来处理异步数据。
}
3.BOOL WINAPI TerminateExtension( DWORD dwFlags )
{
//retrun TRUE;
}
完成后到处dll,放到IIS5.1的目录下(可以自己新建一个虚拟目录),在目录应用程序配置中添加dll就OK了。
最后如果有知道如何调试的朋友麻烦指点一下,谢谢,我使用vs2005“附加到进程” 功能到dllHOSt和Intonet几个进程都
无法调试。