ashx一般处理程序(转载)

原文地址:http://blog.csdn.net/wanda39kela/article/details/46118839

.NET里面webform的后缀是aspx

WCF和WebService的后缀是asmx

四个疑问:

1、什么时候用

2、优缺点

3、简单实现机制

4、简单DEMO

1、什么时候用

虽然通过标准的方式可以创建处理程序,但是实现的步骤比较复杂,为了方便网站开发中对处理程序的应用,从Asp.net 2.0开始,asp.net提供了称为一般处理程序的处理程序,允许我们使用比较简单的方式定义扩展名为ashx的专用处理程序。

对于asp.net网站来说,网站最觉的处理结果就是HTML网页,生成网页的工作通常使用扩展名为aspx的Web窗体来完成。对于处理结果不是HTML的请求,都可以通过一般处理程序完成。例如生成RSS Feed、XML、图片等。
    一般处理程序是asp.net网站中最为简单、高效的处理程序,在处理返回类型不是HTML的请求中有着重要的作用。

不知道我的理解正不正确,那感觉asmx适合作为C/S的服务器端来使用。

2、优缺点

通常是实现IHttpHandler接口,因为不必继承自Page类,所以没有那么多事件需要处理,不必消耗太多资源,所以性能方面要比aspx高

3、简单实现机制

.ashx 文件用于写web handler的。.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。

.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。

4、简单DEMO

在VS2013下,右键项目-->添加-->一般处理程序,就添加成功了,不知道是不是我添加过,所以在右键里面有。

另一种添加方式是右键项目-->添加-->新建项,然后如下图所示。

但我诧异的发现两种添加方式添加出来的文件图标不一样。

第一种方式添加图标和最下方的WebService相同,而第二种添加方式只添加了一个类。

先不管第二种,第一种生成的代码有两个文件

Handler1.ashx

[plain] view plain copy

  1. <%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="WebApplication1.Handler1" %>

Handler1.ashx.cs

[csharp] view plain copy

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Web;
  5. namespace WebApplication1
  6. {
  7. /// <summary>
  8. /// Handler1 的摘要说明
  9. /// </summary>
  10. public class Handler1 : IHttpHandler
  11. {
  12. public void ProcessRequest(HttpContext context)
  13. {
  14. context.Response.ContentType = "text/plain";
  15. context.Response.Write("Hello World");
  16. }
  17. public bool IsReusable
  18. {
  19. get
  20. {
  21. return false;
  22. }
  23. }
  24. }
  25. }

接下来就是怎么访问这个文件,我直接点F5运行项目,然后在浏览器地址栏加上路径,我整个路径是这样的http://localhost:6988/Handler1.ashx

然后成功看到浏览器上一个光秃秃的Hello World

时间: 2024-11-06 22:47:25

ashx一般处理程序(转载)的相关文章

ashx一般处理程序和HttpHandler

asp.net项目中,使用.ashx的文件(一般处理程序)可以用于处理客户端发送来的请求,并将服务器端的处理结果返回给客户端.它能返回的类型可以是文本.或者图片.有时候,我们可以在项目中使用.cs的文件来干同样的活.但是,直接在浏览器上访问.cs的文件是会被无情的拒绝的.这时候需要在Web.Config中进行配置一下就OK了. 开始写这篇博客前,翻阅了其他资料.发现这个知识点远不是我现在所能写的清楚的.但我想,学习总得有个过程,既然在过程中我知道了这一点,那就记录下来.等到有更深入的了解以后,再

ASP.NET ----ashx一般处理程序

asp.net中的一般处理程序,文件后缀为ashx. 代码示例: /// <summary> /// login 的摘要说明 /// </summary> public class login : IHttpHandler { public void ProcessRequest(HttpContext context) { //context.Response.ContentType = "text/plain"; //context.Response.Wri

如何读取二进制图片-.ashx一般处理程序 --1---(转载)

我看过了很多关于如何在页面中显示二进制图片的方式.都很好,可觉得其实用性不是很强.我介绍一种方式希望实用性能强一点.    利用“一般处理程序”.如果你实用的是vs2005你在添加新项中可以见到“一般处理程序”,它的后缀名为.ashx.它是什么?其实它和.aspx很类似.先问问.aspx是如何工作的?也许你知道,.aspx能处理来自外部传入的请求,然后它还能处理这个请求并生成一个html作为结果返回.这是典型的处理外部请求的方式..aspx就是专门为处理“典型”的请求而出现的.那么如果我们现在需

使用ashx一般处理程序,读取不到Session的问题

一般的处理程序文件里面是用不了Session的,必须得实现Session接口才可以用. 1 public class RandomCode : IHttpHandler, System.Web.SessionState.IRequiresSessionState //这里就是实现的接口 2 { 3 public void ProcessRequest(HttpContext context) 4 { 5 string checkCode = GetRandomCode(5); 6 context

ashx一般处理程序---ajax异步加载---省市级联

html页面 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 5 <title></title> 6 <meta charset="utf-8" /> 7 <script src="

.net Ajax与后台一般处理程序(ashx) 交互

本文主要实现无动态刷新查询后台数据功能,主要用到ajax+ashx+sqlserver进行交互. 首先需要引用Jquery: <script language="javascript" type="text/javascript" src="../js/jquery.js"> html脚本: <asp:TextBox ID="tb_corpName" runat="server" MaxL

Bootstrap + AngularJS+ Ashx + SQL Server/MySQL

去年年底12月,为适应移动端浏览需求,花了1个月时间学习Bootstrap,并将公司ASP网站重构成ASP.NET. 当时采取的网站架构: Bootstrap + jQuery + Ashx + SQL Server 时间紧,没人带,只能硬着头皮,最后如期完成,但是也遗留了几个问题. 问题: 1.页面查询条件太复杂,太多的checkbox,jQuery操作DOM虽然方便,但是组合成json提交给后端还是比较麻烦,有没有天然支持json的前端框架或者脚本语言? html控件做的任何修改,都自动保存

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 用户定义

一般处理程序为图片添加水印

1.效果图片 2.代码说明 aspx页面上调用方法. <img src="waterImg.ashx"/> 一般处理程序页面代码. private void outputAutoSizeImg(HttpContext Context) { Context.Response.ContentType = "image/png";//设置响应头数据类型,给浏览器看. //根据物理路径读取图片到内存中 using (Image img = Image.FromF