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


      

      一般处理程序(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 点击-->处理程序映射,然后添加

  • 相关阅读:
    031-进阶(日志)
    Django 路由系统
    C++ 面向对象(接口-抽象类)
    C++ 面向对象(多态)
    C++ 面向对象(数据抽象)
    三十、首页列表显示全部问答,完成问答详情页布局
    二十九、制作首页的显示列表
    二十八、发布功能完成
    二十七、登录之后更新导航
    二十六、完成登录功能,用session记住用户名
  • 原文地址:https://www.cnblogs.com/yaomeng/p/3521444.html
Copyright © 2020-2023  润新知