初始ASP.NET—一般处理程序

2014 年 8 月 10 日4160

推荐阅读:

轻量级 .NET MVC---QMVC

ASP.NET!这个词代表者一个单词Fat!因为他总是捆绑着太多的太多的类,太多太多的各种功能!你也许会用到,如果你反编译或阅读他们开源的源码,你会不会犹如在大海中找不到方向?不管是Web form 还是MVC。 QMVC顾名思义!Q=Quick!他崇拜灵活,简单,快捷!如


玩转论坛营销篇:小谈论坛人气

论坛,本就是为了聚集一部分对某一方面有兴趣的群体而建立的,初期目的可能就是为了召集一群朋友进行营销,阿峰最近认识了比较多互联网的朋友,都很喜欢创建论坛。但是,后期都是需要一个发展。比如说,这个论坛向什么方向发展,这是值得考虑的问题。对于论

问题来源:

今天在敲一个小的demo,利用Jquery实现级联下拉框,敲的过程中发现无论怎么和源码对照都无法显示想要的功能。这才想着原来是没有写后台代码,询问一清同学的时候,他告诉我可以利用ASP.NET的一般处理程序。

我果然是菜鸟初学者,因为我还没有接触过一般处理程序!

什么是一般处理程序:

一般处理程序:是一个实现System.Web.IHttpHandler接口的特殊类。任何一个实现了IHttpHandler接口的类,是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。)它由支持ASP.NET的服务器调用和启动运行。 一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)。

优点:轻量化、效率较高

创建一个一般处理程序将会生成两个后缀名的文件.ashx和.ashx.cs。ashx里只有一个指令集,没有任何其他代码;ashx.cs就是页面处理代码。如果有大量html,需要通过ashx来拼接字符串或读取模板的方式完成。其中.ashx.cs对应的内容,如以下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace web

{

///

/// Handler 的摘要说明

///

public class Handler : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = text/plain; //表示输出结果类型

context.Response.Write(Hello World); //输出结果

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

(1)HttpContext: 请求上下文对象,包含:请求报文对象(HttpRequest),响应报文对象(HttpResponse),服务器帮助类(Server),Session等。

(2)FrameWork在接收到请求后,通过反射技术创建请求路径对应的类的对象,并强制转换成IHttpHandler接口对象(HttpHandler实现了IHttpHandler,之后的转换相当于将子类强转为父类),统一调用ProcessRequest方法处理。

(3)IsReusable属性用来表示在IHttpHandlerFactory对象创建IHttpHandler的时候是否能够将这个Handler存入池中以便重用。

(4)ContentTyp属性是一般处理程序输出响应内容,输出的内容有可能是图片、html等其他页面,浏览器根据响应报文体内容不知道接收到的是什么,需要判断响应报文头里的ContentType来决定将报文体内容作为何种格式的数据来显示。(image/jpeg----表示输出的是图片,text/plain--------表示输出文本)

从上面的代码可以看到,一般处理程序实际上就是一个实现IHttpHandler接口的处理程序类,这个处理程序被ASP.NET直接在系统配置文件映射到了ashx扩展名的请求上。这样,我们就不需要在配置文件中进行配置了。

具体的用途:

HttpHandler程序可以完成普通类程序所能完成的大多数任务:

1.获取客户端通过HTML的Form表单提交的数据和URL参数

2.创建对客户端的响应消息内容

3.访问服务器端的文件系统

4.连接数据库并开发基于数据库的应用

5.调用其他类

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

namespace web

{

///

/// Handler 的摘要说明

///

public class Handler : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = text/plain; //表示输出结果类型

context.Response.Write(Hello World); //输出结果

}

public bool IsReusable

{

get

{

return false;

}

}

}

}

具体的运用:

下面是利用Jquery实现级联下拉框效果中,采集软件,需要用一般处理程序获得汽车类型的一般处理程序的代码。

public class Handler1 : IHttpHandler

{

public void ProcessRequest(HttpContext context)

{

context.Response.ContentType = text/plain;

string strCarName =context.Request[carnameValue].ToString();

SqlConnection conn = new SqlConnection(server=.;database=car;uid=sa;pwd=123456;); //定义连接字符串

conn.Open();

//打开连接

SqlDataAdapter sdr = new SqlDataAdapter();

sdr.SelectCommand =new SqlCommand (selectid,cartype from t_cartype where carnameid=' + strCarName + ',conn);

DataTable dt = new DataTable();

sdr.Fill(dt);

string str =DataTableToJson(1, dt);

context.Response.Write(str);

}

public bool IsReusable

{

get

{

return false;

}

}

}

总结:

其实理论知识再好不会用也只会停留在理论层面。而编程又是这么奇怪的一个东西无论别人讲得多么的详细,都比不上自己的一次实践。文中所提到的demo源码,文章最后会附有下载链接。

分享:

.NET平台调用性能优化

.NET出现以前,很多成熟的库是采用C/C++,或COM的形式存在于各个应用程序中,这些库或程序已经运行了很长时间,并且非常稳定,成熟。.NET提供了多种方法可以在托管代码中调用非托管的代码,但是调用的性能要很多损失,为尽量优化平台调用的性能,这里介绍几

asp.net两种方式的短信接口使用

一种是http请求的方式,另一种就是提供WebService接口供调用的。 [csharp] #region sms.webchinese.cn 发送短信 //服务商 sms.webchinese.cn //sms_url=http://http://www.zjjv.com///web_api/?Uid=账号Key=接口密钥smsMob=手机号码smsText=短信内容 /// summary /

0 0