一般处理程序aspx

public bool IsReusable
{
get
{
return false;
}
}
属性,将该属性的值改为true,为什么不起作用?按照MSDN的解释,该属性的意思是:

“获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例,如果 IHttpHandler 实例可再次使用,则为 true;否则为
false。”
看到这个解释可能部分学生就会想把该属性的值设置为true,就可以重复利用 IHttpHandler 实例,达到提升性能的目的。
但是即使将该属性的值设置为true.也是没有什么作用。今天把这个属性说一下,
我们知道,*.ashx 是交给SimpleHandlerFactory处理的,在该类中,调用GetHandler()方法直接返回相应的实例,也就是在
SimpleHandlerFactory中没有用到IsReusable属性。
首先先从MapHandlerExecutionStep类中的 context.Handler = this._application.MapHttpHandler(context,
request.RequestType, request.FilePathObject, request.PhysicalPathInternal, false)开始看一下,MapHttpHandler方法,
的作用就是创建一个HttpHandler对象,展开该方法有如下代码需要注意, HttpHandlerAction mapping =
this.GetHandlerMapping(context, requestType, path, useAppConfig),该方法的作用就是从<httpHandlers>节中根据请求
的方式(requestType)和路径(path)获取相应的配置项,最后的返回类型是HttpHandlerAction
。如果展开GetHandlerMapping方法,那么大体上的工作是,先从缓存中去查找,如果找不到再去从配置文件中查找相应的映射。
在MapHttpHandler方法中还有一个地方就是 IHttpHandlerFactory factory = this.GetFactory(mapping);该接口创建的是
HttpHandler。
我们知道ashx能直接处理HTTP请求,它们都实现了IHttpHandler接口,因为已经完成了相应的配置,默认的配置信息如下:

<httpHandlers>
<add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="true"/>
</httpHandlers>

并且SimpleHandlerFactory也实现了IHttpHandlerFactory接口,所以可以根据请求的路径创建一个IHttpHandler实例。

HttpApplication在处理请求时,并不会直接创建一个IHttpHandler的实例,而是先获取一个IHttpHandlerFactory的对象,

再调用GetHandler()方法来获取一个IHttpHandler实例。

时间: 2024-12-13 21:47:43

一般处理程序aspx的相关文章

ASP.NET - 处理页面

客户端与服务端数据交互 要把本地数据提交给服务端,就要使用form元素,服务端通过request[表单元素的name]就可以获取表单元素的value. form的两种提交方式 Get方式:提交的表单数据会显示在浏览器地址栏的地址后边,数据量小使用Get方式.此为默认. Post方式:以密送的形式提交表单的数据到服务器,数据量比较大的时候使用Post方式.只要在页面点击过表单里点击过提交按钮,那么当你点击浏览器的刷新按钮或右击页面刷新都会产生提交行为,也即会产生重复提交表单数据. <form ac

IIS8集成模式下打开静态资源被aspx处理程序处理,StaticFileModule失效问题分析

问题描述: 打开js,css,jpg之类的静态资源文件触发了asp.net mvc的权限认证,并不是直接返回静态内容 问题分析: StaticFileModule 失效 ,可能是文件权限问题 问题解决: 由于在集成模式下,默认进程标识是应用程序池名称相同的"用户", 如应用程序池为 tom, 那么在进程管理器中,w3wp.exe的用户即为tom 而IIS中要动态的为这种标识设计权限则需要同时给 IIS_IUSERS组  和  IUSR组设置完全控制权限!!! 记得是同时设置. 如果仅给

JQuery ajax 在aspx中传值和取值

传值:ajax中的data(json)  js代码: <script type="text/javascript"> $(function () { $("#btnAddNews").bind("click", function () { var _name= $.trim($("#txtNewTitle").val()); $.ajax({ type: "POST", url: "A

json+一般处理程序读取数据库数据

一般处理程序的语法结构 string jsoncallback = context.Request["jsoncallback"]; 声明变量 前台传值使用        string josn = "([";  定义变量接受值        context.Response.ContentType = "text/json";        Cx cc = new Cx();  后台查询的类方法        List<Model>

02-17 位图验证码(一般处理程序)

建立一个空网站,在设计界面工具箱中拖入一个TextBox工具,一个按钮,外加一个Image图片工具(充当数字.字母以图片形式).但是这样做出来的验证码会出现一个问题,每当点击一下按钮,界面自动提交一遍,重新刷新一遍再返回,为防止整个页面被重新提交,需要加入一个UpdatePanel,只刷新当前updatePanel内的内容即可. 界面设计好后,需要添加一个以ashx结尾的文件项,在这里面写位图随机验证码的格式等等. 1 <%@ WebHandler Language="C#" C

asp.net中一般处理程序中添加session

asp.net中使用一般处理程序(.ashx)添加session,利用context.session["xxx"] = value的方式把值保存到session:运行的时候会出现该对象尚未引用. 解决办法:1,在一般处理程序的类后面添加IRequiresSessionState.例如public class xxx : IHttpHandler, IRequiresSessionState. 2,引入session所使用的类库,using System.Web.SessionState

使用jquery+一般处理程序异步加载信息

需求:有时候,web界面对性能要求比较高,我们就不考虑使用asp.net控件,而是使用html标签+jquery+一般处理程序来进行异步处理. aspx代码: <asp:Repeater ID="rptRecordList" runat="server"> <HeaderTemplate> <table style="width: 100%;"> </HeaderTemplate> <Item

asp .net 一般处理程序

asp.net:一般处理程序.ashx效率比较高效,WebForm(aspx)比较消耗资源,MVC(效率刚好介于两者之间)asp.net里常用的文件.ashx 一般处理程序HttpHandler,asp.net核心程序,但一般使用.aspx(常用于不需要返回大量html代码的时候).aspx 常用程序webForm,用于创建网页和网页进行编程的核心文件(前台文件)(要返回大量html).aspx.cs 用于编写大量的C#业务代码和.aspx配套使用.ascx  指明一个 asp.net 用户定义

由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。

错误: HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供您请求的页面.如果该页面是脚本,请添加处理程序.如果应下载文件,请添加 MIME 映射. windows 8系统,运行aspx页面出现上述错误信息,解决办法如下: iis7  :控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能,勾选上“.net扩展性”和“ASP.NET”,保存后,重启IIS服务器即可. iis8:控制面板->打开或关闭w