• HttpHandler:处理特定类型的web页面


    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;


    HttpModule是过滤器,HttpHandler实现了ISAPI扩展功能,他处理请求(Request)的信息和发送响应(Response)。HttpHandler功能通过实行IHttpHandler接口达到。

    HttpHandler处理程序实现了System.Web.IHttpHandler接口的.NET组件。任何事项了IHttpHandler接口的类都可以用于处理输入的HTTP请求,这类似于ISAPI扩展。HTTPHandlerISAPI扩展的区别在于在URL中可以使用HttpHandler的文件名称直接调用,这与ISAPI扩展类似。

    实现的步骤:

    1、 编写类实现IHttphandler接口,并编译为dll

    2、 web.config或者machine.config文件中注册这个处理程序。

    3、 IIS中把文件扩展(你要处理的文件的扩展名)映射到ASP.NET ISAPI扩展 (aspnet_isapi.dll)上面。

    4、建立一个*.xumh的文件,你会发现可以被处理了
    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    namespace xumh
    {
        
    /// <summary>
        
    /// HttpHandler实现IHttpHandler接口,可以定义对特定类型的文件的处理
        
    /// 1、编写类实现IHttpHandler接口,并编译为dll文件
        
    /// 2、在web.config文件中注册
        
    /// <httpHandlers>
        
    ///        <add verb="*" path="*.xumh" type="xumh.testHttpHandler,testHttpHandler"/>
        
    ///        <add verb="动作:Post/Get" path="处理的文件类型" type="空间.类名,dll名称"/>
        
    /// </httpHandlers>
        
    /// </summary>
        public class testHttpHandler : IHttpHandler , System.Web.SessionState.IRequiresSessionState
        {
            
    /// <summary>
            
    /// HttpHandler是否可以用于处理相同的其他类型的请求,实现重用
            
    /// </summary>
            public bool IsReusable
            {
                
    get { return true; }
            }

            
    /// <summary>
            
    /// HttpHandler处理程序的核心,调用这个方法来处理Http请求
            
    /// </summary>
            
    /// <param name="context"></param>
            public void ProcessRequest(HttpContext context)
            {
                
    string html = @"<html>
                                        <body>
                                            <h1>Hello xumh Reader</h1>
                                        </body>
                                    </html>
    ";
                
    //要处理session,必须引入System.Web.SessionState.IRequiresSessionState
                System.Web.SessionState.HttpSessionState session = context.Session;
                session[
    "One"= "Session One!";
                
    //
                context.Session["Another"= "Another Session";
                context.Response.Write(
    "Session: Another 的值为 " + context.Session["Another"].ToString());

                context.Response.Write(html);
            }
        }
    }
  • 相关阅读:
    LeetCode 11. Container With Most Water
    LeetCode 10 Regular Expression Matching
    LeetCode 9 Palindrome Number
    LeetCode 8 String to Integer (atoi)
    从ASP.NET Core 3.0 preview 特性,了解CLR的Garbage Collection
    HttpClient参观记:.net core 2.2 对HttpClient到底做了神马
    LeetCode 7 Reverse Integer
    《地久天长》观影笔记
    《小丑》观后感
    粒子群基本算法学习笔记
  • 原文地址:https://www.cnblogs.com/flaaash/p/997076.html
Copyright © 2020-2023  润新知