您的位置:首页 > 编程学习 > ASP.NET > 正文

ashx 文件怎么用

更多 时间:2014-1-21 类别:编程学习 浏览量:2503

ashx 文件怎么用

ashx 文件怎么用

一、ashx文件的添加

打开你的ASP.NET web site;右击项目选择 “Add New Item...”;将显示一个“Add New Item”的对话框,选择“Generic Handler”。此时,你就会得到一个新的ashx文件。

 

二、ashx文件自动生成的代码

 

它定义了IHttpHandler接口的两部分。非常重要的一部分是ProcessRequest(),它将决定这个ashx文件是被请求还是被显示。你不能修改这个继承的接口或删除它的方法。

  •  
  • C# 代码   复制
  • 
    <%@ WebHandler Language="C#" Class="Handler" %>
    
    using System;
    using System.Web;
    
    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; }
      }
    }
    		
  •  

    从以上代码我们可以发现,一般处理程序是一个实现了IHttpHandler接口的类,可以在服务器端执行,必然也可以从浏览器获得数据,也可以发给浏览器数据,那么上面的代码各自都代表什么呢?

     

    ProcessRequest (HttpContext context):方法在程序被访问时调用,参数是请求上下文的对象,通过对象可以处理信息

    context.Response.Write("Hello World"):是向浏览器输出方法,把数据从服务器发送到浏览器。

     

    三、ashx文件相关知识说明


    1、什么是HttpHandler

    HttpHandler是一个HTTP请求的真正处理中心,也正是在这个HttpHandler容器中,ASP.NET Framework才真正地对客户端请求的服务器页面做出编译和执行,并将处理过后的信息附加在HTTP请求信息流中再次返回到HttpModule中。

     

    2、IHttpHandler是什么

    IHttpHandler定义了如果要实现一个HTTP请求的处理所必需实现的一些系统约定。HttpHandler与HttpModule不同,一旦定义了自己的HttpHandler类,那么它对系统的HttpHandler的关系将是“覆盖”关系。

     

    3、IHttpHandler如何处理HTTP请求

    当一个HTTP请求经同HttpModule容器传递到HttpHandler容器中时,ASP.NET Framework会调用HttpHandler的ProcessRequest成员方法来对这个HTTP请求进行真正的处理。以一个ASPX页面为例,正是在这里一个ASPX页面才被系统处理解析,并将处理完成的结果继续经由HttpModule传递下去,直至到达客户端。

    对于ASPX页面,ASP.NET Framework在默认情况下是交给System.Web.UI.PageHandlerFactory这个HttpHandlerFactory来处理的。所谓一个HttpHandlerFactory,所谓一个HttpHandlerFactory,是指当一个HTTP请求到达这个HttpHandler Factory时,HttpHandlerFactory会提供出一个HttpHandler容器,交由这个HttpHandler容器来处理这个HTTP请求。

    一个HTTP请求都是最终交给一个HttpHandler容器中的ProcessRequest方法来处理的。

     

    四、ashx文件的实例

     

    前端页面

  •  
  • HTML 代码   复制
  • 
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="ajax。aspx。cs" Inherits="About_ajax" %>
    
    <!DOCTYPE>
    
    <html>
    <head runat="server">    
         <title>Jquery Ajax实例</title>  
           <script type="text/javascript">
            $(document).ready(function() {
                $("#dbtn").click(function() {
                    $.ajax({
                        type: "POST",
                        //dataType:"Text",  
                        url: "AjaxHandler。ashx",
                        data: { name: "admin", pass: "admin" },
                        beforeSend: function() { $("#ds").html("loading"); },
                        success: function(msg) { $("#ds").html("<p>" + msg + "</p>"); }
                    });
                });
                //
                $("#btn_cbfbh").click(function() {
                    //var zbm = '111';
                    //alert(zbm);
                    $.ajax({
                        type: "POST",
                        //dataType:"Text",  
                        url: "S_CBFBM。ashx",
                        data: { ZBM: "51011200100200" },
                        beforeSend: function() {
                            //$("#li_load").visible = true;
                        },
                        success: function(msg) {
                            //$("#li_load").visible = false;
                            $("#ds").html("<p>" + msg + "</p>");
                            $("#CBFBM").val(msg);
                        }
                    });
                });
                //
            });
            function js_function_get_cbfbm(p_zdm) {
                $.ajax({
                    type: "POST",
                    url: "S_CBFBM。ashx",
                    data: { ZBM: p_zdm },
                    beforeSend: function() {
                        //$("#li_load").visible = "true;
                    },
                    success: function(msg) {
                        //$("#li_load").visible = false;
                        $("#ds").html("<p>" + msg + "</p>");
                        $("#CBFBM").val(msg);
                    }
                });
            };
        </script>
    </head>
    <body onload="javascript:{js_function_get_cbfbm('sfsfds');}">
        <form id="form1" runat="server">
        <li>
          <li id="ds"><p>我是AJAX原来的文字!</p></li>  
          <input type="button" value="提交AJAX测试" id="dbtn" name="dbtn" />  
          <br />
          <input type="text"  id="CBFBM" name="CBFBM"/>   
          <input type="button" value="获取成包方编号" id="btn_cbfbh" name="btn_cbfbh" /> 
          <br />
          <li id="li_load" ><p></p></li>     
        </li> 
        <script type="text/javascript">
              var zbm='';
              if(zbm=='') zbm='51011200100900';
              //js_function_get_cbfbm(zbm);
        </script> 
        </form>
    </body>
    </html>
    
    		
  •  

    后端类代码

  •  
  • C# 代码   复制
  • 
    <%@ WebHandler Language="C#" Class="AjaxHandler" %>
    
    using System;
    using System.Web;
    
    public class AjaxHandler : IHttpHandler {
        
        public void ProcessRequest (HttpContext context)