HttpModule必须实现
System.Web.IHttpModule接口,
HttpHandler和
HttpHandlerFactory必须分别实现
System.Web.IHttpHandler接口和
System.Web.IhttpHandlerFactory接口。
<HttpModules>
web.config配置文件中configuration\System.Web节中添加下列几行:
<HttpModules>
<add type="type" name="name" />
</HttpModules>
其中type属性为HttpModule的标识号和类库名称,name属性则为该模块取一个较为友好的名称方便 在Global.asax调用
-----------------------------------------------------------------------
<httpHandler>
在web.config文件中configuration\System.Web节中添加<httpHandler>标记:
<httpHandlers>
<add verb="verb" path="path" type="type" />
</HttpModules>
ASP.NET对每一个接收到的请求指派相应的HttpHandler来处理并呈现相应内容,该指派决定于所接收请求的verb和path的内容,verb为HTTP请求的类型:GET或者POST,path则为请求的文件的路径和文件名。
在开发基于Microsoft IIS的应用时,开发者除了可以编写ASP程序外,还可以使用Visual C++等开发工具,开发ISAPI应用,以获取更为强大的功能。可以编写两种ISAPI扩展:一种是ISAPI Server Extention,另一种是ISAPI Filter,但是,ISAPI扩展应用的编写通常对开发者有比较高的要求,开发和部署的难度比较大。在开发ASP.Net应用时,我们仍然可以编写ISAPI应用,以扩充IIS的功能,但是,ASP.Net为我们提供了另外一种选择——使用HTTP
Handler 和HTTP Module。这是通过使用IHttpHandler 和 IHttpModule接口来实现的。HTTP Handler提供了类似于ISAPI Server Extention的功能,而HttpModule实现了类似于ISAPI Filter的功能,并且,比ISAPI,在开发和部署上都要简单的多。 应用HttpHandler和HttpModule,使应用程序可以与IIS Web服务器的低级别请求和响应服务交互。本文首先介绍HttpHandler和HttpModule的概念和基本使用方法,并介绍了一个应用
HttpModule实现权限系统的案例。
HTTP 处理管道的基本模型
要对HttpModule和 IHttpHandler进行研究,必须先对ASP.Net的处理管道有一个了解。在ASP.Net应用程序中,系统使用一组相关的类,通过一定的顺序来处理客户端的请求(Request),ASP.NET应用程序的处理模式可称之为 HTTP处理管道。HttpModule和IhttpHandler就是这个处理管道上的两个处理环节。 HTTP处理管道中的类在System.Web名称空间中定义,主要有以下类型: · HttpWorkerRequest 抽象类定义了ASP.Net页面处理请求的基本方法;
· HttpRuntime 提供了处理应用的一组服务; · HttpContext 保存了处理一次请求的所有相关上下文信息; · HttpApplicationFactory 提供相关目录的应用程序; · HttpApplication 定义了所有ASP.Net应用程序的通用的方法、属性和事件。这个类也是在用户在global.asax文件中定义的应用的基类; · Modules 处理请求前和响应后的事件; · HandlerFactories 提供应用程序中的Handlers; · Handlers 处理请求和响应。
在Windows平台上,HTTP 管道需要IIS的支持。为了运行ASP.NET应用,IIS需要以下两个文件:ASPNET_ISAPI.DLL和ASPNET_WP.EXE
· ASPNET_ISAPI.DLL是一个ISAPI Extention他将发向IIS的请转交ASPNET_WP.EXE处理
· ASPNET_WP.EXE使用HttpRuntime对请求进行具体处理
HttpHandler的实现
HttpHandler 实现了类似于ISAPI Extention的功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能的实现通过实现 IHttpHandler接口来达到。实际上,我们在编写ASP.Net页面时,ASP.Net页面所继承的基类—— System.Web.UI.Page——也实现了HttpHandler接口,也是一个HttpHandler,看一下它的定义就知道了(C#):
public class Page : TemplateControl, IhttpHandler
接口IHttpHandler的定义如下:
interface IHttpHandler
{
void ProcessRequest(HttpContext ctx);
bool IsReuseable { get; }
}
接口中ProcessRequest是添加自己的代码,进行相应处理的地方。IsReuseable属性指明该HttpHandler的实现类是否需要缓存。 下面的示例展示了HttpHandler的基本使用: 1、建立一个名为MyNameSpace的工程,添加一个类,名称为MyHandler,代码如下:
例1:
namespace MyNameSpace
{
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext ctx)
{
HttpResponse Response;
Response.Write("This is my handler");}
public bool IsReusable
{
get { return true; }
}
}
}
2、将上面的代码编译,生成 MyNameSpace.Dll文件; 3、建立一个新的WebApplication项目,或打开一个WebApplication项目,将文件MyNameSpace.Dll添加到项目的引用中,或复制到项目的bin目录下; 4、修改Web.Config,添加如下内容:
<configuration>
<system.web>
<httpHndlers>
<add verb="*" path="*.aspx"
type=" MyNameSpace.MyHandr, MyNameSpace" />
</httpHndlers>
</system.web>
</configuration>
配置文件中的选项说明: · verb可以是"GET"或"POST",表示对GET或POST的请求进行处理。"*"表示对所有请求进行处理。 · Path指明对相应的文件进行处理,"*.aspx"表示对发给所有ASPX页面的请求进行处理。可以指明路径,如"/test/*.aspx",表明只对test目录下的ASPX文件进行处理。 · Type属性中,逗号前的字符串指明HttpHandler的实现类的类名,后面的字符串指明Dll文件的名称。现在,请求项目中的任何ASPX页面,页面上显示的始终只有如下一行字:
This is my handler
因为,我们自定义的Handler截获了所有发向ASPX页面的请求,并且用自己的的方法来处理这些请求了。 为了使我们的ASPX页面能够顺利运行,我们需要修改Web.Config文件:
<configuration>
<system.web>
<httpHndlers>
<add verb="*" path="*.foo"
type=" MyNameSpace.MyHandr,hander" />
</httpHndlers>
</system.web>
</configuration>
为了让对后缀名为.foo的文件的请求能够被我们的Handler截获运行,我们还需要一些额外的工作。打开IIS的管理控制台,又键单击站点,选择"属性",跳出站点的属性对话框。选择主目录选项。
选择配置,弹出应用程序配置对话框,将".foo"添加到应用程序映射中,我们现在可以在项目中添加一个.foo文件,当向该文件发送请求时,浏览器显示:
This is my handler
而对其他ASPX文件的访问不受影响。
实现Handler Factory
实现HttpHandler功能的另外一个选择是实现一个Handler Factory,这是通过实现IHttpHandlerFactory接口来实现的。 IHttpHandlerFactory接口的定义如下:
interface IHttpHandlerFactory
{
IHttpHandler GetHandler(HttpContext ctx,
string requestType,
string url,
string pathTranslated);
void ReleaseHandler(IHttpHandler handler);
}
GetHandler方法在请求开始的时候被调用,而ReleaseHandler在请求结束,所有的Handler都不再需要的时候被调用。使用HttpHandlerFactory的过程一般如下:首先定义实际处理HttpHandler的类,这个类会在HandlerFactory中被调用以进行实际的处理:
public class BasicHandler : IHttpHandler { ... }
然后,定义自己的HandlerFactory:
public class BasicHandlerFactory : IHttpHandlerFactory
{
public IHttpHandler GetHandler(HttpContext ctx,
string requestType,
string url,
string pathTranslated)
{
return new BasicHandler();
}
public void ReleaseHandler(IHttpHandler handler) {}
}
最后,在Web.Config文件中注册这个Factory:
<configuration>
<system.web>
<httpHandlers>
<add verb="POST" path="*.foo" type="MyNamespace.BasicHandlerFactory, MyAssembly" />
</httpHandlers>
</system.web>
</configuration>
步Handler
通过实现 IHttpAsyncHandler可以实现对HTTP请求的异步处理。IHttpAsyncHandler接口继承IHttpHandler,也需要实现ProcessRequest 方法和 IsReusable 属性,同时,需要实现 BeginProcessRequest 和 EndProcessRequest 方法。BeginProcessRequest 启动异步调用以处理单个的 HTTP 请求,而 EndProcessRequest 则在该进程结束时执行清理代码。 IHttpAsyncHandler的实现和注册同IHttpHandler类似,读者可以参考MSDN的相关文档。
分享到:
相关推荐
`MVCHandler`类是实现这个接口的关键组件,它标志着MVC管道的起点。... ...然后,它将`HttpContext`包装成`HttpContextBase`,这是一个抽象的、更易使用的版本,以便在处理过程中提供更多的灵活性。`ProcessRequest`方法...
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
内容概要:本文详细介绍了利用MATLAB进行虚拟电厂日前随机优化调度的方法。首先,通过蒙特卡洛模拟生成大量光伏出力和负荷的随机场景,考虑到光伏出力和负荷预测的不确定性。接着,采用概率距离削减法将大量场景缩减为少数典型场景,确保计算效率的同时保留重要特征。然后,构建随机优化模型,将燃气轮机、储能、弃光等成本纳入目标函数,并设置严格的功率平衡和设备出力限制作为约束条件。最终,使用CPLEX求解器求解该混合整数规划问题,得到最优调度方案。实验结果显示,相比传统确定性优化,随机优化显著提高了系统的鲁棒性和经济效益。 适合人群:从事电力系统研究、虚拟电厂调度、智能电网优化的研究人员和技术人员。 使用场景及目标:适用于需要处理光伏出力和负荷预测不确定性的虚拟电厂调度场景,旨在提高调度方案的稳定性和经济性,降低运营风险。 其他说明:文中提供了详细的MATLAB代码片段,帮助读者理解和实现具体的算法步骤。此外,还给出了若干实用技巧和注意事项,如场景削减时的概率归一化、储能SOC约束的跨场景耦合等。
# 压缩文件中包含: 中文文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
农产品销售管理系统基于SpringBoot+MyBatisPlus+Vue+MySQL开发,专为Java课程设计、毕业设计及初学者打造。适合作为Java期末大作业或实战练手项目。采用IDEA开发,技术主流,代码规范,帮助快速掌握全栈开发技能,助力Java学习与答辩!
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
物联网设备开发_蓝牙低能耗BLE技术_小米手环1非心率版数据读取与控制_实现Android平台下小米手环1代非心率版设备的蓝牙连接_步数数据获取_电量监测_震动控制功能_适用于An
安卓系统开发_蓝牙低功耗监测与音频控制_支持AirPods全系列电量显示与入耳检测_为OPPO手机深度优化并兼容其他安卓设备的智能耳机管理助手_实现耳机离耳自动暂停和入耳自动播放功
内容概要:本文介绍了一个基于.NET 6 WPF框架构建的多功能图像处理与3D点云显示工具。该项目集成了ReactiveUI用于响应式UI设计,OpenCVSharp用于图像处理,以及HelixToolkit用于3D点云渲染。通过ReactiveUI实现了参数的实时调整和图像处理的即时反馈,如Canny边缘检测、高斯模糊等。此外,项目还包括了YOLOv4的目标检测功能,支持多种3D点云格式的导入和渲染。文中详细描述了各个模块的技术实现细节,包括性能优化和常见问题的解决方案。 适合人群:熟悉.NET和WPF框架的开发者,尤其是对图像处理和3D点云感兴趣的研发人员。 使用场景及目标:① 实时调整图像处理参数,快速验证算法效果;② 作为3D点云查看器,支持多种格式的点云数据;③ 集成YOLOv4进行目标检测,适用于计算机视觉领域的研究和开发。 其他说明:项目仍在持续改进中,源码中有许多待优化的地方,提供了丰富的扩展空间和技术挑战。
内容概要:本文探讨了机器人路径规划领域的多种经典算法,重点介绍了人工势场法的基本原理和Matlab实现方法。文中不仅提供了传统人工势场法的具体代码实现,还针对其易陷入局部最优的问题提出了改进措施,如引入随机扰动。此外,简要提及了A*和RRT算法的特点及其实现思路。通过详细的代码解析和参数调优指南,帮助读者更好地理解和应用这些算法。 适合人群:对机器人路径规划感兴趣的初学者以及有一定编程基础的研究人员。 使用场景及目标:适用于希望深入了解人工势场法的工作原理并掌握其具体实现的技术人员。目标是能够独立编写和优化路径规划算法,特别是在Matlab环境下进行实验和验证。 其他说明:文章附带了完整的代码片段和注释,便于读者实践操作。同时强调了不同算法的选择依据和应用场景,鼓励读者根据实际情况灵活选用合适的方法。
内容概要:本文深入介绍了威纶通触摸屏一机多屏程序及其与FX3U系列PLC和MODBUS通讯的集成应用。首先,文章阐述了系统的硬件架构,即一个FX3U系列PLC搭配四个MT6051ip触摸屏的工作原理。接着,详细解析了威纶通模板的特点,特别是梯形图的详尽注释,便于理解和维护。此外,文章还探讨了PLC与上位机的MODBUS通讯设置,包括波特率、数据位、停止位等参数的具体配置方法。最后,强调了该系统的学习意义和借鉴价值,适用于新手和资深工程师。 适合人群:从事自动化控制领域的工程师和技术人员,尤其是那些希望深入了解PLC、触摸屏和MODBUS通讯的人群。 使用场景及目标:①帮助工程师快速掌握威纶通触摸屏的一机多屏配置;②提高PLC与触摸屏、上位机之间的通讯效率;③优化中小型企业生产线的监控系统,提升生产效率和稳定性。 其他说明:文中提供的实例和代码片段有助于读者更好地理解和实践相关技术,同时附带了一些实用的小技巧,如心跳检测和双看门狗设计,增强了系统的可靠性和容错能力。
内容概要:本文深入剖析了一款基于STM32F407的CNC雕刻机控制系统,涵盖硬件原理图和源码实现。首先介绍了步进电机驱动部分,详细解释了XYZ三轴的方向引脚配置及时序控制,确保电机平稳运行。接着讨论了PWM脉冲生成的核心配置,通过定时器精确控制雕刻精度,并解决了高速雕刻时的脉冲丢失问题。串口通信部分采用DMA+空闲中断,显著提升了数据处理效率。运动插补算法利用定时器触发DMA传输脉冲,实现高效的三轴联动。此外,文中还涉及了G代码解析、运动前瞻算法以及硬件设计中的防呆措施,如IO口的TVS二极管和RC滤波。最后,分享了一些调试经验和隐藏的开发彩蛋,如通过LED灯效显示工作状态和电流检测实现堵转保护。 适合人群:具备嵌入式开发基础,尤其是对STM32和CNC雕刻机感兴趣的开发者和技术爱好者。 使用场景及目标:①帮助开发者理解和实现CNC雕刻机的控制系统;②提供详细的硬件和软件设计方案,便于动手制作;③分享调试技巧和实战经验,提高系统的稳定性和可靠性。 阅读建议:本文不仅提供了详细的代码实现和硬件设计,还包括了许多实战经验和调试技巧,因此在阅读过程中应重点关注这些细节,并尝试复现相关功能。
# 压缩文件中包含: 中文-英文对照文档 jar包下载地址 Maven依赖 Gradle依赖 源代码下载地址 # 本文件关键字: jar中文-英文对照文档.zip,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压最外层zip,再解压其中的zip包,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
karson711_JKCircleViewDemo_12888_1745868188120
医学超声成像_基于FPGA和CYUSB30的超声信号处理_超声波发射与AD采集_剪切波弹性成像_多通道数据同步传输_高速BULK传输_URAT状态控制_4096点扫描线采集_30
一些小游戏,比较好玩,windows10系统运行
内容概要:本文详细介绍了如何利用三菱FX3U PLC通过360等份插补的方法绘制三个同心圆。首先将圆分解为360个等分点,通过三角函数实时计算各点的X/Y坐标,采用子程序循环调用来实现连续运动。文中提供了具体的代码片段,展示了如何通过寄存器配置和三角函数计算来精确控制圆的绘制过程。此外,还讨论了如何通过调整参数实现不同的图形效果,如虚线圆、螺旋线等。并强调了该方法在工业应用中的灵活性和高效性。 适合人群:对PLC编程有一定基础,希望深入了解PLC在工业控制中具体应用的研发人员和技术爱好者。 使用场景及目标:适用于需要进行精密轨迹控制的应用场合,如数控机床、自动化生产线等。主要目标是掌握PLC在复杂轨迹控制中的应用技巧,提高工业控制系统的精度和效率。 其他说明:文中提到的技术不仅限于画圆,还可以扩展应用于其他复杂的几何图形绘制,如多边形、螺旋线等。并且可以通过进一步优化参数设置,提升系统的响应速度和稳定性。
chromedriver-mac-arm64-138.0.7153.0.zip
前端测试自动化_跨浏览器兼容性测试工具_基于Nodejs的实时浏览器测试框架_支持多种测试框架和覆盖率统计_用于Web开发中的自动化测试和持续集成_提供稳定可靠的跨浏览器测试解决