• iis处理请求随记回顾


    ----http是无状态的,

    每次http请求户不影响,都是独立的;不会记的上次请求;

    -------iis原理:输入地址--socket封装请求体报文--发送---iis解析封装响应体---返回;

    ----httpcontext-两个对象:httprequest(封装http请求)和httpResponse(封装相应响应);

    ---请求的报文

    httprequest解析请求报文,分割请求体的各个部分;

    ---请求原理总结:

    发送一个请求----有httpApplication的processrequest方法 创建一个httpcontext上下文--

    并将请求报文信息封装到httpcontext上下文的httprequest中,并创建响应报文httpresponse;

    --代码:

    //将请求报文封装

    1.HttpContext context=new HttpContext("requestr");

    //封装响应

    2.HttpApplication application=new HttpApplication();

    3.application.ProcessRequest(context);

    //发送相应报文:(头部和主体)

    4.socket.Send(context.Response.GetHeader());

    4.socket.Send(context.Response.BodyData());

    ----HttpApplication.ProcesssRequet的内部实现

    public class HttpApplication

    {

       public void processRequest(hhttpContext context)

       {

          //处理当前请求,并将相应正文放入response中

          //处理静态文件js,css,html,htm

          //模拟请求静态页面(根据请求判断css,jpg,js,html等类型)

          //获取服务端绝对路径

          string currenturl=AppDomain.CurrentDomain,baseDirectory;

          //拼接总路径

           string fileName=path.combine(currenturl,context.request.requesturl);

           context.response.bodydata=file.readallbytes(filename);

       }

    }

    ----处理动态页面的实现:

    public void ProcessDynamicFile(httpcontext context)

    {

       //获取请求类文件即类名

       string classname=path.getfilenamewithoutextension(context.request.requesturl);

       //通过反射获取当前命名空间

       string namespace=system.reflection.methodbase.getcurrentMethod   ().DeclaringType.Namespace;

       //拼接

       string fullname=namespace+"."+className;

       //因为每页页面实现Ihttphander(内部封装了ProcessRequest(context)方法;

       IhttpHandler obj=(IhttpHandler)System.reflation.Assembly.getexecutingassembly().

       createinstance(fullName,true);

       obj.processRequest(context);

    }

  • 相关阅读:
    json转化成实体
    mysql基础知识点三排序分组分页优化
    leetcode4majorityElement
    mysql基础知识点四事务隔离与锁机制
    相应内容格式 gzip
    特殊时间格式转化成date
    20220221_摘抄_一别两宽,各生欢喜
    leetcode数学完美数
    leetocde前缀和
    第五轮算法刷题顺序
  • 原文地址:https://www.cnblogs.com/guozefeng/p/3439192.html
Copyright © 2020-2023  润新知