iis处理请求随记回顾

系统 1875 0

----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);

}

iis处理请求随记回顾


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论