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);
}
iis处理请求随记回顾的更多相关文章
- asp.net请求响应模型原理随记回顾
asp.net请求响应模型原理随记回顾: 根据一崇敬的讲师总结:(会存在些错误,大家可以做参考) 1.-当在浏览器输入url后,客户端会将请求根据http协议封装成为http请求报文.并通过主sock ...
- 用 IIS 实现请求转发
最近部门要开发一个简单的APP,部分数据是现有项目已经存在的,为了方便维护,希望只提供一个交互的入口,并且协议的规则不变. 基于这个需求,有两套解决方案: 1.用代码将现有的api封装一层,对请求数据 ...
- c#多线程随记回顾
C#多线程随记回顾 1.创建多线程方式知道的有三种: ---手动创建Thread.使用线程池.使用task任务 ---手动创建Thread,分两种带参数和不带参数的帮助委托器 eg: //帮助器委托 ...
- 利用IIS应用请求转发ARR实现IIS和tomcat整合共用80端口
现在网上流传的实现iis和tomcat共享80端口的方法是基于isapi_redirect插件实现的, 我的实现方法不同, 原理相似,具有更好的优点. 先说下基于isapi_redirect缺点,ja ...
- IIS 处理请求 原理
有时候我们会发现当我们访问一个IIS网站时,使用网址可以正常访问,但是使用IP却不行,这是什么原因呢? 原来IIS可以使用一个IP地址和端口绑定多个网站,这些网站的IP地址与端口都一样,因此在客户端或 ...
- iis post 请求.html文件报405
其实本地文件默认是不允许post请求的,但是需要配置一下,配置如下: 我的iis版本是8.5 当然默认也是不能post请求 *.html或是*.json的的文件的,这个问题困 ...
- C# socket通信随记回顾
----tcp(传输 控制 协议)是可靠消息:三次握手(发给对方,对方发给自己,证明对方接到消息,在发给对方,说明自己能接到对方消息,这样就都知道了):tcp:每发送一次消息,对方都会回复,证明接受到 ...
- DotNetCore部署(IIS)踩坑记
一.windows系统中Dotnet core runtime 安装后,无法启动次程序,因为计算机中丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法 错误现象如图 因为 ...
- Windows Server 2008 IIS 并发请求设置
更新服务器的时候,突然发现部分机器出现了错误,大致描述如下 HTTP Error 503.2 - Service Unavailable 正在超过 serverRuntime@appConcurren ...
随机推荐
- 架构设计之设计模式 (一) 适配器(Adapter)---提高复用性
简介 简介是为了描述一下该模式是干嘛用的,为了让不了解该模式的人看了之后也有一些新的认识. 本文章分为两部分,第一部分主要介绍适配器模式:第二部分介绍该模式与相近模式的异同. 下午一直在讨论设计模式, ...
- 从头学起android<GridView网格视图.二十八.>
GridView基于组件的网络格所有的形式的组分的,例如:当制作专辑,所有的图片将在相同的尺寸在不同的显示格在孩子,是否能够依靠这个组件完成.此组件的继承结构参见例如下面: java.lang.Obj ...
- C#命令模式-设计模式学习
命令模式(Command Pattern) 概述 在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”.但在某些场合,比如要对行为进行“记录.撤销/重做.事务”等处理,这种无法抵御变 ...
- 了解了解你自己的话zookeeper(从那时起,纠正了一些说法在线)
1,先看看官方的定义吧: ZooKeeper is a distributed, open-source coordination service for distributed applicatio ...
- signalR例子
不用找了,比较全的signalR例子已经为你准备好了. 这几天想着将一个winform的工具上线到web上,因为对时时性的要求比较高,找朋友咨询了一下推荐了SignlarR 框架,比较强大.昨天才 ...
- Android 数据库加密
一 一个简短的引论 SQLite是一个轻量的.跨平台的.开源的数据库引擎.它的读写效率.资源消耗总量.延迟时间和总体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方式(如Android.i ...
- centos7的安装
初装centos7还是在九月份,那时候关于win7 下centos7硬盘安装的资料很少,现在就好多, 在这里备份下东西吧 首先是安装的时候,关于找从那个地方找image的问题. hda ,sda分别表 ...
- ArcGIS API for Silverlight 编辑Geometry
概述 ArcMap的编辑功能是非常强大的,ArcEngine编写的CS程序也可以用到ArcMap中提供的编辑功能,那么ArcGIS API forSilverlight针对Geometry的编辑提供了 ...
- 谈论quick-cocos2d-x和cocos2d-x lua了解差异
之前说,我把这个两个词区别.经过太长时间.当然,反击的麻烦.quick-cocos2d-x它提到quick,cocos2d-x lua姑且称为本地lua对. 我认为,首先与这两个小的朋友接触会跟着或多 ...
- Asp.Net MVC5入门学习系列①
原文:Asp.Net MVC5入门学习系列① 现在直接开始MVC5的学习系列,学习资源来自Micrsoft. 开始使用Asp.Net MVC 5 打开Visual Studio 2013,然后新建一个 ...