asp.net frameworke处理程序的作用
1 向客户端发送响应的工作都由处理程序完成
2 任何实现System.web.ihttpHandler接口的类都可以作为传入的http请求的目标
3 如果需要重复使用自定义处理程序对象,需要创建自定义处理程序工厂。
4 如何创建自定义处理程序
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Handlers
{
public class CustomHandler : IHttpHandler
{
public bool IsReusable
{
get
{
return false;
}
} public void ProcessRequest(HttpContext context)
{
string time = DateTime.Now.ToShortTimeString();
if (context.Request.CurrentExecutionFilePathExtension==".json")
{
context.Response.ContentType = "application/json";
context.Response.Write(string.Format("{{\"time\":\"{0}\"}}", time));
}
else
{
context.Response.ContentType = "text/html";
context.Response.Write(string.Format("<span>{0}</span>", time));
}
}
}
}
在web.config文件中注册自定义的处理程序
<system.webServer>
<handlers>
<add name="customJson" path="*.json" verb="GET" type="Handlers.CustomHandler"/>
<add name="customText" path="Time.text" verb="*" type="Handlers.CustomHandler"/>
</handlers>
</system.webServer>
5 如何创建自定义的处理程序工厂
自定义处理程序工厂是实现IHttpHandlerFactory接口的类,他负责生成用于响应的IHttpHandler对象
首先创建实现IHttpHandlerFactory接口的实例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace Handlers
{
public class InstanceControlFactory : IHttpHandlerFactory
{
private int factoryCounter = ;
public IHttpHandler GetHandler(HttpContext context, string requestType, string url, string pathTranslated)
{
return new InstanceControlHandler(factoryCounter++);
} public void ReleaseHandler(IHttpHandler handler)
{
throw new NotImplementedException();
}
} public class InstanceControlHandler : IHttpHandler
{
private int v; public InstanceControlHandler(int v)
{
this.v = v;
} public bool IsReusable
{
get
{
return false;
}
} public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write(string.Format("the counter value is {0}",v));
}
}
}
其次在web.config文件中注册实现IHttpHandlerFactory接口的类
<system.webServer>
<handlers>
<add name="customJson" path="*.json" verb="GET" type="Handlers.CustomHandler"/>
<add name="customText" path="Time.text" verb="*" type="Handlers.CustomHandler"/>
<add name="InstanceControl" path="*.instance" verb="*" type="Handlers.InstanceControlFactory"/>
</handlers>
</system.webServer>
6 如何重复的使用处理程序,将同一个处理程序对象应用于多个不同的请求
asp.net frameworke处理程序的作用的更多相关文章
- .net mvc 站点自带简易SSL加密传输 Word报告自动生成(例如 导出数据库结构) 微信小程序:动画(Animation) SignalR 设计理念(一) ASP.NET -- WebForm -- ViewState ASP.NET -- 一般处理程序ashx 常用到的一些js方法,记录一下 CryptoJS与C#AES加解密互转
.net mvc 站点自带简易SSL加密传输 因项目需要,传输数据需要加密,因此有了一些经验,现简易抽出来分享! 请求:前端cryptojs用rsa/aes 或 rsa/des加密,后端.net ...
- ASP.NET -- 一般处理程序ashx
ASP.NET -- 一般处理程序ashx 如果在一个html页面向服务器端请求数据,可用ashx作为后台页面处理数据.ashx适合用作数据后台处理,相当于WebForm中的aspx.cs文件或 ...
- asp.net中处理程序调用HttpContext.Current.Session获取值出错
asp.net中处理程序调用System.Web.HttpContext.Current.Session获取Session时提示错误:未将对象引用设置到对象的实例. 解决办法:在处理程序文件类中实现I ...
- ASP.Net各个命名空间及作用
(引用自hungerw的博客) 命名空间 描述 Microsoft.CSharp 支持C#语言编译和生成代码 System 包含了基 ...
- asp.net一般处理程序利用反射定位方法
asp.net的一般处理程序我想大家用得都不少,经常会如下如下的代码: using System; using System.Collections.Generic; using System.Lin ...
- asp.net 一般处理程序接收上传文件的问题
在使用Html+ashx处理文件上传时,遇到上传文件超过4M的问题,首先HTML代码如下: <!DOCTYPE html> <html> <head> <me ...
- 初识ASP.NET---一般处理程序
问题来源: 今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现不管怎么和源代码对比都无法显示想要的功能. 这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我能够利用ASP ...
- asp.net ashx处理程序中switch case的替代方案总结
目录 1.用委托字典代替switch...case; 2.利用反射替代switch...case: 3.比较两种方案 4.其他方案 4.说明 5.参考 在开发 asp.net 项目中,通常使用一般处理 ...
- asp.net identity UserSecurityStamp 的作用
UserSecurityStamp 主要是用来对用户安全相关信息做一个快照. 在使用asp.net identity 的 CreateAsync(TUser user) 创建一个用户的时候,如果开启了 ...
随机推荐
- oracle-sql脚本
select * from dba_users; create tablespace kyc_coo; create user kyc_coo identified by "123456&q ...
- 关于在Vue中,只要单个列表显示模态框的做法。
1.在后台返回的数组对象中,添加一个自定义属性,这个属性用于控制模态框的显示.2.在事件中传入该列表的索引参数,然后在事件方法中找到数组相对应的下标,更改自定义属性便可
- code review 20190705
命名规范: 做了什么? 目的是什么? 在什么基础上进行? 注释说明 sql update,where 先行????? 警告: 清空所有警告:所有隐藏比较深入的bug,都是由警告带来的 + 忽略警告 枚 ...
- jQuery.fn.extend与jQuery.extend的区别
jquery 本身并不提供 jQuery.color() 这个方法,如果我们需要对jQuery本身提供的方法进行扩展,则我们就需要是用jQuery.fn.extend: jQuery.fn.exten ...
- jmeter解决乱码
在jmeter.properties 这个文件里面 找到sampleresult.default.encoding=xx 后面xx改成utf-8,然后取消注释 解决jmeterbody里面中文显示不出 ...
- 查看创世区块 Genesis Block和channel.tx文件
将 Block 详细内容导入到 json 文件查看 configtxgen -inspectBlock channel-artifacts/genesis.block > genesis.blo ...
- 数据库基础知识介绍(MySQL)
一.什么是数据库 1.数据库概念:数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API接口用于创建,访问,管理,搜索和复制所保存的数据. 2.RD ...
- C#实现排列、组合
排列组合的概念 排列:从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(Arrangement). 组合:从m个不同的元素中,任取n(n≤m)个元 ...
- HDU6739 Invoker 【dp】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6739 借鉴了这个网址的题解:https://blog.csdn.net/qq_41785863/art ...
- [LuoguP2151][SDOI2009]HH去散步_递推_矩阵乘法_图论
HH去散步 题目链接:https://www.luogu.org/problem/P2151 数据范围:略. 题解: 数据范围好小,让人不禁想用一些毒瘤算法,但是失败了. 这种类似时间啊这种有点重复味 ...