ashx 文件怎么用

article/2025/9/25 12:27:57
本文导读:ashx是什么文件,如何创建 .ashx 文件用于写web handler的。其实就是带HTML和C#的混合文件。.ashx文件类似于.aspx文件,可以通过它来调用HttpHandler类,从而免去了普通.aspx页面的控件解析以及页面处理的过程。

一、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() {  //$("#div_load").visible = true;  },  success: function(msg) {  //$("#div_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() {  //$("#div_load").visible = "true;  },
                success: function(msg) {  //$("#div_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">
    <div>
      <div id="ds"><p>我是AJAX原来的文字!</p></div>  
      <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 />
      <div id="div_load" ><p></p></div>     
    </div> 
    <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) {
        //context.Response.ContentType = "text/plain";
        //context.Response.Write("Hello World");
        context.Response.ContentType = "text/plain";

        //context.Response.Write("Hello World");  
        if (context.Request["name"].ToString() == "admin" &&
            context.Request["pass"].ToString() == "admin")
        {
            context.Response.Write("Y");
        }
        else
        {
            context.Response.Write("N");
        } 
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

    [System.Web.Services.WebMethod]
    public static string SayHello()
    {
        return "Hello Ajax! AjaxHandler。ashx";
    } 

}

 

C# 代码    复制
<%@ WebHandler Language="C#" Class="S_CBFBM" %>

using System;
using System.Web;

/// <summary>
/// 功能:获取 编号
/// </summary>
public class S_CBFBM : IHttpHandler {
    
    public void ProcessRequest (HttpContext context) 
    {        
        context.Response.ContentType = "text/plain";
                  
        string zbm=context.Request["ZBM"].ToString();
        zbm=zbm.Trim();
        if(zbm!="") 
        {
            string cbfbm = zbm + "001";
            context.Response.Write(cbfbm);
        }
        else
        {
            context.Response.Write("");
        } 
    }
 
    public bool IsReusable 
    {
        get 
        {
            return false;
        }
    }

    [System.Web.Services.WebMethod]
    public static string SayHello()
    {
        return "Hello Ajax! S_CBFBM。ashx";
    } 

}

http://chatgpt.dhexx.cn/article/DUKN876w.shtml

相关文章

mysql的数据库迁移到另一个机器上

1.先找到迁移服务器上的Data文件&#xff0c;我安装的是mysql5.7&#xff0c;默认安装的路径。那么就是在C:\ProgramData\MySQL文件里面&#xff0c;先把隐藏文件打开。 这个Data文件就是你的数据文件&#xff1b;将你要迁移的数据库文件放到这里如下&#xff1a; 然后打开my.i…

MySQL数据库迁移方案比较和使用

数据库迁移方案 数据迁移&#xff08;Data migration&#xff09;是指在存储类型、格式和计算机系统之间的数据转换。 1 常用的迁移方案介绍 ​ 项目使用的数据存储技术是MySQL&#xff0c;关于MySQL的迁移方案大致分为三类&#xff1a; 1.1 mysqldump命令 mysql提供了对数…

MySQL数据库迁移详细步骤(转)

一、背景简介 1、问题描述 由于机房搬迁&#xff0c;需要对后台DB服务器进行迁移&#xff0c;同时为了保证在数据迁移过程中&#xff0c;对线上业务不造成影响&#xff0c;并能够做到秒级切换。如果我们采用普通的逻辑备份&#xff0c;比如&#xff1a;mysqldump&#xff0c;会…

【转载】MySQL数据库迁移详细步骤

【转载】http://sofar.blog.51cto.com/353572/1598364 一、背景简介 1、问题描述 由于机房搬迁&#xff0c;需要对后台DB服务器进行迁移&#xff0c;同时为了保证在数据迁移过程中&#xff0c;对线上业务不造成影响&#xff0c;并能够做到秒级切换。如果我们采用普通的逻辑备…

MYSQL数据库迁移到ORACLE数据库

一、环境和需求 1、环境 Mysql数据库服务器&#xff1a; OS version&#xff1a;linux 5.3 for 64 bit Mysql Server version: 5.0.45 Oracle数据库服务器&#xff1a; OS version&#xff1a;linux 5.3 for 64 bit Oracle version&#xff1a;oracle 11g r2 2、需求 把mysq…

MySQL数据库迁移到ORACLE(持续更新)

1. 使用Oracle SQL Developer 官方 SQL Developer 23.1下载 选择Windows 64-bit with JDK 11 included安装 2.下载后解压&#xff0c;选择exe执行启动&#xff0c;启动后见图 3. 创建连接 默认支持创建Oracle连接&#xff08;见下图&#xff09;&#xff0c;第三方连接需导入…

Linux下MySQL数据库迁移

默认安装的MySQL数据库的数据库目录为&#xff1a;/var/lib/mysql&#xff0c;使用一段时间后发现硬盘空间已经不能满足我们的使用需求&#xff0c;所以需要迁移数据库到磁盘空间更大的目录下&#xff0c;具体过程如下&#xff1a; 1、备份数据库 虽然迁移理论上不会出现问题…

MySQL数据库迁移详细步骤

转载自&#xff1a;http://sofar.blog.51cto.com/353572/1598364 一、背景简介 1、问题描述 由于机房搬迁&#xff0c;需要对后台DB服务器进行迁移&#xff0c;同时为了保证在数据迁移过程中&#xff0c;对线上业务不造成影响&#xff0c;并能够做到秒级切换。如果我们采用普…

mysql数据库迁移到达梦数据库

说明:在windowns上安装达梦数据库&#xff0c;并从mysql5.7迁移到达梦数据库8&#xff0c;此处使用的是达梦数据库的试用版本&#xff0c;如果要安装标准版或者企业版&#xff0c;可以花钱购买。 下载安装包 从达梦官网下载安装包&#xff0c;下载地址&#xff1a;https://ww…

Mysql数据库迁移问题解决方案

目录 问题描述错误原因解决方案其他问题运行选项问题SQL代码问题旧数据库迁移新数据库问题 问题描述 使用 Navicat 导入之前转储好的 sql 文件&#xff0c;报错 错误原因 1、在信息日志当中往上翻&#xff0c;发现没有选择数据库&#xff0c;所以报错的原因就是没有提前创建…

【MySQL】如何把Windows上的MySQL数据库迁移到Linux服务器上

目录 1. 前言2. 物理备份与逻辑备份3. mysqldump实现逻辑备份4. 逻辑恢复 1. 前言 最近在学黑马的《瑞吉外卖》&#xff0c;前期的基础版本一致在 Windows 电脑上开发&#xff0c;包括 MySQL 数据库也是安装在 Windows 电脑上。最近才学到优化篇&#xff0c;安装了 Linux 虚拟…

MySQL数据库迁移(数据文件直接迁移)

MySQL数据库迁移 MySQL数据库迁移(数据文件直接迁移) 在今年10月下旬的时候&#xff0c;公司的服务器需要迁移&#xff0c;其中涉及到了MySQL数据库迁移。查看了一下MySQL数据文件的大小&#xff0c;接近60G的大小(实际数据并没用那么多)。由于服务器上业务需要&#xff0c;要尽…

mysql——数据库之间的迁移

今天继续给大家分享mysql数据库的知识 不同数据库之间的迁移 不同数据库之间迁移是指从其他类型的数据库迁移到MySQL数据库&#xff0c;或者从MySQL数据库迁移到其他类型的数据库。例如&#xff0c;某个网站原来使用Oracle数据库&#xff0c;因为运营成本太高等诸多原因&…

mysql数据库迁移方案

怎样用命令行把MySQL数据库迁移到另一台Linux服务器 1、用dump命令备份数据库。 #mysqldump-uroot-pdbfile>dbfile.sql 2、用rsync从新服务器获得备份的文件(SCP或WGET也可以)。 #rsync-avrrootmyolddbserver:/home/mydumpfolder/dbfile.sql 3、登陆新服务器的mysql客户端。…

mysql数据库数据迁移方法

说明&#xff1a;这里不讨论命令行还有通过navicat等工具的做法&#xff0c;这里只讨论在mysql坏掉&#xff08;不能启动&#xff09;的情况下&#xff0c;怎么办。 方法&#xff1a; a) 先来看mysql数据库文件的情况&#xff1a; mysql坏掉了&#xff0c;不管是linux还是wi…

MySQL数据库迁移(直接复制文件)

原地址&#xff1a;http://www.cnblogs.com/advocate/archive/2013/11/19/3431606.html MySQL数据库迁移(数据文件直接迁移) 在今年10月下旬的时候&#xff0c;公司的服务器需要迁移&#xff0c;其中涉及到了MySQL数据库迁移。查看了一下MySQL数据文件的大小&#xff0c;接近60…

MySQL数据库迁移方法

一、停止MySQL服务 此电脑右键 – 管理 – 服务&#xff0c;找到 MySQL 停止 二、修改路径 到C:\ProgramData\MySQL\MySQL Server x.x找到my.ini&#xff0c;打开它 第95行datadir改成目标路径&#xff0c;特别注意目标路径分隔符必须为 “\”&#xff0c;否则不成功&…

Mysql数据库迁移|如何把一台服务器的mysql数据库迁移到另一台服务器上的myql中

前言 那么这里博主先安利一下一些干货满满的专栏啦&#xff01; Linux专栏https://blog.csdn.net/yu_cblog/category_11786077.html?spm1001.2014.3001.5482操作系统专栏https://blog.csdn.net/yu_cblog/category_12165502.html?spm1001.2014.3001.5482手撕数据结构https:/…

MySQL数据迁移

1、停止MySQL服务 右击 我的电脑—>管理—>服务和应用程序 —>服务—>Mysql—>停止 2、将原磁盘路径下的数据复制到需要迁移到路径下 如&#xff1a;将C:\projectDeploy\mysql\mysql5.6\mysql5.6\MySQL Server 5.6\data中的数据复制到 D:\mysql\dat…

数据迁移的几种方式 - MySQL数据库

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…