您的位置:首页 > 编程语言 > ASP

对ASP.NET运行机制之 一般处理程序ashx的学习

2014-01-15 20:19 597 查看
  

  一般处理程序(HttpHandler)是·NET众多web组件的一种,ashx是其扩展名。其中一个httpHandler接受并处理一个http请求,类比于Java中的servlet。类比于在Java中需要继承HttpServlet类,在.net中需要实现IHttpHandler接口,这个接口有一个IsReusable成员,一个待实现的方法ProcessRequest(HttpContextctx) 。程序在processRequest方法中处理接受到的Http请求。成员IsReusable指定此IhttpHnadler的实例是否可以被用来处理多个请求。

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

<%@ WebHandler Language="C#" Class="LoginPage" %>

using System;
using System.Web;
using System.Text;

public class LoginPage : IHttpHandler {

public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
//context.Response.Write("Hello World");
context.Response.Charset = "utf-8";
context.Response.CacheControl = "no-cache";
context.Response.AddHeader("Prama", "no-cache");

StringBuilder strMsg = new StringBuilder();

try
{
string strOption = context.Request.QueryString["option"];
if (!String.IsNullOrEmpty(strOption))
{
         //这里是取页面传来的UserName,然后赋值给返回的变量,格式是jason需要的格式
  
if (strOption == "Login")
{
            //也可以用context.Session["str1"];   来获取session值
string UserName = context.Request.QueryString["UserID"];
strMsg.Append("[{Result:'1',UserName:" + UserName + "}]");
}
}
}
catch (Exception ex)
{
strMsg = strMsg.Append("{[Result:'" + ex.Message + "']}");
}
context.Response.Write(strMsg);
}

//IsReusable成员,指定此IhttpHnadler的实例是否可以被用来处理多个请求。(多个界面调用)
public bool IsReusable {
get {
return true;
}
}
}


上面代码的过程是,从页面js中用jQuery的

$.getJSON("",{para1:val1,para2:val2...},function(json){
    var rst= json[0].Result;
})


来传参数到ashx,并获取返回的json格式的数据。

405错误解决办法

检查IIS主目录->应用程序设置->配置中,有没有.ashx;

如果没有,点击添加->C:/WINDOWS/Microsoft.NET/Framework/V2.0.50727/aspnet_isapi.dll;

扩展名填入:.ashx

保存

IIS7 点击-->处理程序映射,然后添加
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: