仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 633|回复: 8
打印 上一主题 下一主题

[学习教程] ASP编程:利用ISAPI过滤器加强IIS的功效

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.作为一个WWW服务器软件,微软公司的InternetInfomationServer(IIS)复杂易学,办理便利,失掉了普遍的利用。您还能够经由过程ISAPI过滤器,举行本人定制的处置,来加强IIS的功效。ISAPI过滤器能够定制以下的处置:吸收HTTP协定头预处置、发送HTTP协定头预处置、发送生数据预处置、取得生数据预处置、HTTP会话停止信息处置、自界说的平安认证机制、URL映照信息处置、日记纪录处置等。天真使用这些定制处置,您能够完成很多看似难以完成的功效,失掉意想不到的效果。可是ISAPI过滤器利用不妥也会影响服务器的功能。

ISAPI过滤器的开辟十分复杂,只必要完成三个接口DLL函数便可。它们是GetFilterVersion()、HttpFilterProc()、TerminateFilter(),人人能够检察MSDN懂得具体的用法。ISAPI过滤器是DLL文件,一样平常用C/C++言语开辟。为使ISAPI过滤器可以运转,您必要在注册表的HKEY_LOCAL_MACHINESystemCurrentControlSet
ServicesW3SVCParameters下创建一个字符串项,其称号为"FilterDlls",值为ISAPI过滤器文件的全路径称号。若这个字符串项已存在,只需把它的全路径称号到场个中,分歧的ISAPI过滤器文件之间用";"分开,您能够依据实行的优先按次加在得当的地位。设置好后从头启动IIS服务,您的ISAPI过滤器就发扬感化了。
上面作者举一个详细的使用例子。
对会见内容举行统计剖析:
一般我们在必要计数的页面内放一个计数器,大概利用ASP文件来完成计数功效。这类办法不克不及合用于如README.TXT等其他非HTML格局的文件。假如利用IIS的日记功效又太占用空间而不便利。作者经由过程定制URL映照信息处置来跟踪感乐趣的几个文件的计数统计,将了局纪录在一个文件中。
上面是它的源程序。
fcount.def:
LIBRARYfcount
EXPORTSGetFilterVersion
HttpFilterProc
TerminateFilter
fcount.c:
#include<stdio.h>
#include<string.h>
#include<windows.h>
#include<httpfilt.h>
#definelogfile"C:InetPubfcount.log"
#definepages5
char*urls[]={
"/default.htm",
"/banner.gif",
"/product/readme.txt",
"/product/product1.htm",
"/product/product2.htm"
};
intcounts[pages];
BOOLWINAPIGetFilterVersion
(HTTP_FILTER_VERSION*pVer)
{
inti;
pVer->dwFilterVersion=HTTP_FILTER_REVISION;
strcpy(pVer->lpszFilterDesc,"fcount");
pVer->dwFlags=SF_NOTIFY_URL_MAP;/*过滤的内容*/
for(i=0;i<pages;i++){/*从文件读进初始计数值*/
counts[i]=GetPrivateProfileInt("VisitCounter",
urls[i],
0,logfile);
}
returnTRUE;
}
DWORDWINAPIHttpFilterProc
(HTTP_FILTER_CONTEXT*pfc,
DWORDnoteType,VOID*pvNote)
{
inti;
charlurl[512];
charbuf[16];
strcpy(lurl,((PHTTP_FILTER_URL_MAP)pvNote)
->pszURL);
_strlwr(lurl);
for(i=0;i<pages;i++){
if(strcmp(lurl,urls[i])==0){
counts[i]++;/*计数值增添*/
if(counts[i]%10==0){
/*当计数值满10时记进文件,
以避免体系俄然逝世失落时数据全体丧失*/
_itoa(counts[i],buf,10);
WritePrivateProfileString("VisitCounter",
urls[i],buf,logfile);
}
break;
}
}
returnSF_STATUS_REQ_NEXT_NOTIFICATION;
}
BOOLWINAPITerminateFilter(DWORDdwFlags)
{
inti;
charbuf[16];
for(i=0;i<pages;i++){
/*体系中断时将计数值写进文件*/
_itoa(counts[i],buf,10);
WritePrivateProfileString("VisitCounter",
urls[i],buf,logfile);
}
returnTRUE;
}
以上二个例子作者利用VC6.0编译,在WINNT2000+SP3和IIS5.0上调试经由过程。
无法实现跨操作系统的应用。当然这也是微软的理由之一,只有这样才能发挥ASP最佳的能力。可是我却认为正是Windows限制了ASP,ASP的概念本就是为一个能让系统运行于一个大的多样化环境而设计的;
飘飘悠悠 该用户已被删除
沙发
发表于 2015-1-19 17:49:09 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
活着的死人 该用户已被删除
板凳
发表于 2015-1-25 23:52:39 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
愤怒的大鸟 该用户已被删除
地板
 楼主| 发表于 2015-2-4 13:26:58 | 只看该作者
不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍
小魔女 该用户已被删除
5#
发表于 2015-2-9 23:44:44 | 只看该作者
下面简单介绍一下我学习ASP的方法,希望对想学习ASP的朋友有所帮助...
深爱那片海 该用户已被删除
6#
发表于 2015-2-28 08:50:26 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
再见西城 该用户已被删除
7#
发表于 2015-3-9 21:53:40 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
只想知道 该用户已被删除
8#
发表于 2015-3-17 02:08:06 | 只看该作者
跟学别的语言一样,先掌握变量,流程控制语句(就是ifwhileselect)等,函数/过程,数组
不帅 该用户已被删除
9#
发表于 2015-3-23 15:10:43 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象,这就明显产生以下几个问题:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 10:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表