Ashx入门

简介

一般处理程序(HttpHandler)是.net众多web组件的一种,ashx是其扩展名。一个httpHandler接受并处理一个http请求,类比于java中的servlet。类比于继承httpServlet,在.net中需要实现IhttpHandler接口,这个接口有一个成员IsReusable,一个待实现的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中处理接受到的Http请求。成员IsReusable的使用方法后文会有介绍。一个http Handler的例子是这样的:


<% @ webhandler language="C#"class="AverageHandler" %> 
using System; 
using System.Web;
public class TestHandler : IHttpHandler 
{ 
public bool IsReusable { get { return true; } } 
public voidProcessRequest(HttpContext ctx) 
{ 
ctx.Response.Write("hello"); 
} 
}

浏览器地址栏请求这个ashx,会打印一个hello字符串

ashx在第一期请求的时候才编译,而不是预编译,所以建议在web.config里直接指定所对应的HttpHandler


IsReusable属性


IsReusableIhttpHandler接口的成员,这个成员的值的含义是:此IhttpHnadler的实例是否可以被用来处理多个请求。MSDNIsReusable的解释为:该值指示其他请求是否可以使用IHttpHandler实例。

所以指定IsReusabletrue的前提是:

    1. processHandler方法要线程安全
    2. 不依赖Request项。

ashx中访问Session

让自己的ashx类显式的实现一个接口 IReadOnlySessionState,示例如下:

 

<% @ webhandler language="C#" class="DownloadHandler" %> 
using System; 
using System.Web; 
using System.Web.SessionState ; 
 
public class DownloadHandler : IHttpHandler,  IReadOnlySessionState 
{
public bool IsReusable { get { return true; }} 
public void ProcessRequest(HttpContext ctx) 
  { 
//访问session
//ctx.Session["fred"]);
  } 
} 


如果要读写Session的值,那么只要实现 IRequiresSessionState 接口就即可,这两个接口没有待实现的方法


 


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaScript(简称JS)是一种脚本语言,常用于网页上的交互效果和动态网页开发。JS具有单线程执行的特性,即一次只能执行一个任务。当任务执行时间过长时,会阻塞用户界面的响应。为了解决这个问题,JS引入了异步编程的概念。 ashx是一种后缀名为.ashx的文件,通常用于处理网页请求。ashx文件内部的代码可以与服务器进行交互,并返回处理结果。JS异步使用ashx文件的目的是为了在与服务器进行通信时不阻塞用户界面。 使用JS异步调用ashx文件时,可以发送AJAX请求。AJAX是一种在不刷新整个网页的前提下,通过在后台与服务器进行少量数据交换的技术。通过AJAX,可以向ashx文件发送请求并获得服务器处理的结果。 JS可以通过XMLHttpRequest对象或者fetch API来发送AJAX请求。具体而言,可以创建一个XMLHttpRequest对象,通过open()方法指定请求的URL,通过send()方法发送请求,通过回调函数处理返回的结果。在这个过程中,JS会异步发送请求给ashx文件,而不会阻塞用户界面的操作。 ashx文件在接收到请求后,可以通过处理参数,与数据库进行交互,进行一些数据处理操作,然后将结果返回给JS。JS再通过回调函数拿到返回的结果,并进行相应的操作。 总之,JS异步调用ashx是为了避免任务阻塞用户界面,通过AJAX方式将请求发送给ashx文件,并通过回调函数获取服务器处理的结果。这样,用户界面可以同时进行其他操作,提高用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值