zoukankan      html  css  js  c++  java
  • 对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 点击-->处理程序映射,然后添加

  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/yaomeng/p/3521444.html
Copyright © 2011-2022 走看看