一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名。一个httpHandler接受并处理一个http请求,类比于Java中的servlet。类比于在Java中需要继承HttpServlet类,在。net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中处理接受到的Http请求。成员IsReusable指定此IhttpHnadler的实例是否可以被用来处理多个请求。
目录
1实例编辑
一个httpHandler的实例:
<% @ webhandler language="C#" class="AverageHandler" %>
using System;
using System.Web;
public class AverageHandler : IHttpHandler
{
//IsReusable成员,指定此IhttpHnadler的实例是否可以被用来处理多个请求。
public bool IsReusable{ get { return true; } }
//在processRequest方法中处理http请求
public void ProcessRequest1(HttpContext ctx)
{
ctx.Response.Write("hello");
}
}
在浏览器中请求此程序,将会打印hello。
2在ashx中访问session编辑
让自己的ashx类显式的实现一个接口 IReadOnlySessionState,示例如下:
<% @ webhandler language="C#" class="DownloadHandler" %>
public class DownloadHandler : IHttpHandler, IReadOnlySessionState {
public bool IsReusable { get { return true; }}
public void ProcessRequest2(HttpContext ctx)
{
//在上下文中访问session
//ctx.Session["fred"]);
}
}
如果要读写Session的值,那么只要实现 IRequiresSessionState 接口就即可,这两个接口没有待实现的方法。
3405错误解决办法:编辑
检查IIS主目录->应用程序设置->配置中,有没有.ashx的后缀;
如果没有,点击添加->C:/WINDOWS/Microsoft.NET/Framework/V2.0.50727/aspnet_isapi.dll;
扩展名填入:.ashx
保存即可解决。