asp.net实现页面的一般处理程序(CGI)学习笔记
2009-02-17 00:24
706 查看
ASP.NET提供低级别的请求/响应 API,使开发人员能够使用 .NET 框架类为传入的 HTTP 请求提供服务。为此,开发人员需创作支持 System.Web.IHTTPHandler 接口和实现 ProcessRequest()方法的类。当处理 HTTP 请求不需要由高级别的 页框架抽象化提供的服务时,处理程序通常很有用。处理程序的常用用途包括筛选器和类似 CGI 的应用程序,尤其是那些返回二进制数据的应用程序。
ASP.NET 收到的每个传入 HTTP 请求最终由实现 IHTTPHandler 的类的特定实例来处理。IHttpHandlerFactory 提供了处理 IHttpHandler 实例 URL 请求的实际解析的结构。除了 ASP.NET 提供的默认 IHttpHandlerFactory 类外, 开发人员还可以选择创建和注册工厂以支持大量的请求解析和激活方案。
从这段文字可以看出,当aspx页面不涉及。net框架提 供的高级界面技术(如数据缓存、状态保持、Web窗体控件引用等等)时,且向客户端输出的不是复杂的HTML文本,特别是只向客户端返回二进制数据(如图 片,声音等)时,可以用一个。cs应用程序文件(本文使用c#语言,如果是用VB或JScript,……)来替代,而该应用程序必须有一个实现 System.Web.IHTTPHandler 接口和并实现 ProcessRequest() 方法的类。一个简单的例子如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ImageHander : IHttpHandler, IReadOnlySessionState
namespace WebApplication1
{
/**//// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
/**////类必须实现IHttpHandler接口。如果程序将访问会话状态(Session),则必须实现 IRequiresSessionState 接口(不包含任何方法的标记接口)。*/
public class DLLHander : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse res = context.Response;
res.Write("<html><body>");
res.Write("<h1>DllHander处理</h1><hr>");
res.Write("本页面直接由DLL处理");
res.Write("</html></body>");
}
public bool IsReusable
{
get
{
return true;
}
}
}
}
在配置文件web.config中添加aspx->dll映射,添加后,web.config应该是这样子的:
<httpHandlers>
<add verb="*" path="Index.aspx" type="WebApplication1.DLLHander,WebApplication1"/>
</httpHandlers>
现在当浏览器访问时这个地址时候 http://localhost/WebApplication1/index.aspx 实际上就是调用了WebApplication.dll中DLLHander类的ProcessRequest方法,在浏览中应该可以看到一个简单的页面。
最后希望朋友们提出问题,共同解决。谢谢!
Charles Chen
MSN: Charles.C.Chen@newegg.com
Email: gotosunny@msn.com
ASP.NET 收到的每个传入 HTTP 请求最终由实现 IHTTPHandler 的类的特定实例来处理。IHttpHandlerFactory 提供了处理 IHttpHandler 实例 URL 请求的实际解析的结构。除了 ASP.NET 提供的默认 IHttpHandlerFactory 类外, 开发人员还可以选择创建和注册工厂以支持大量的请求解析和激活方案。
从这段文字可以看出,当aspx页面不涉及。net框架提 供的高级界面技术(如数据缓存、状态保持、Web窗体控件引用等等)时,且向客户端输出的不是复杂的HTML文本,特别是只向客户端返回二进制数据(如图 片,声音等)时,可以用一个。cs应用程序文件(本文使用c#语言,如果是用VB或JScript,……)来替代,而该应用程序必须有一个实现 System.Web.IHTTPHandler 接口和并实现 ProcessRequest() 方法的类。一个简单的例子如下:
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class ImageHander : IHttpHandler, IReadOnlySessionState
namespace WebApplication1
{
/**//// <summary>
/// $codebehindclassname$ 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
/**////类必须实现IHttpHandler接口。如果程序将访问会话状态(Session),则必须实现 IRequiresSessionState 接口(不包含任何方法的标记接口)。*/
public class DLLHander : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
HttpResponse res = context.Response;
res.Write("<html><body>");
res.Write("<h1>DllHander处理</h1><hr>");
res.Write("本页面直接由DLL处理");
res.Write("</html></body>");
}
public bool IsReusable
{
get
{
return true;
}
}
}
}
在配置文件web.config中添加aspx->dll映射,添加后,web.config应该是这样子的:
<httpHandlers>
<add verb="*" path="Index.aspx" type="WebApplication1.DLLHander,WebApplication1"/>
</httpHandlers>
现在当浏览器访问时这个地址时候 http://localhost/WebApplication1/index.aspx 实际上就是调用了WebApplication.dll中DLLHander类的ProcessRequest方法,在浏览中应该可以看到一个简单的页面。
最后希望朋友们提出问题,共同解决。谢谢!
Charles Chen
MSN: Charles.C.Chen@newegg.com
Email: gotosunny@msn.com
相关文章推荐
- asp.net实现页面的一般处理程序(CGI)学习笔记
- asp.net实现页面的一般处理程序(CGI)学习笔记
- 使用HTML页面和一般处理程序模拟ASP.NET WebForms中的事件
- 使用ASP.NET一般处理程序或WebService返回JSON的实现代码
- Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
- asp.net 使用一般处理程序和ajax post实现登录以及记住密码
- asp.net 读取一个文本文件,并输出到网页显示 通过 一般处理程序实现
- asp.net使用一般处理程序实现文件下载
- asp.net ashx一般处理程序实现async await异步操作
- asp.net WebForm中的一般处理程序、aspx页面深入学习
- asp.net一般处理程序实现验证码功能
- asp.net 一般处理程序实现网站验证码
- asp.net 程序,单击按钮时 同时实现打开页面并处理值
- (转)Asp.Net 用Jquery和一般处理程序实现无刷新上传大文件
- 使用ASP.NET一般处理程序或WebService返回JSON的实现代码
- asp.net 程序,单击按钮时 同时实现打开页面并处理值
- Asp.net利用一般处理程序实现文件下载功能
- C#、asp.net中的一般处理程序.ashx文件重命名问题
- 【C#】对异步请求处理程序IHttpAsyncHandler的理解和分享一个易用性封装 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法 【手记】手机网页弹出层后屏蔽底层的滑动响应 【手记】ASP.NET提示“未能创建类型”处理 【Web】一个非常简单的移动web消息框 【手记】解决EXCEL跑SQL遇“查询无法运行或数据库表无法打开...”
- asp.net 上传文件到一般处理程序中