ASP.NET | WebForm 处理机

原创 2015年07月10日 00:17:17

------------------------------------------------------------------------------------------------------------------------

当浏览器向服务器发送一个请求报文,请求报文里肯定包含了url地址的。当服务器软件IIS接收到浏览器发送过来的请求后,IIS会判你请求的是否是html静态页面还是aspx(aphx)动态页面
如果是html的静态页面的话,IIS就会直接去我们的服务器所在的硬盘中读取这个静态页面的代码,然后返回给浏览器
如果是aspx(ashx)的话 IIS发现自己处理不了.aspx(ashx)文件,就会去根据后缀名去映射表(这个映射表可以去,控制面板->管理工具->INTERNET信息服务IIS管理器->处理程序映射 中找)中找对应的后缀,如果能找到的话,就会,它就会把这条请求通过我们一个中间处理程序aspnet_isapi.dll ,讲我们的处理请求转交给我们的asp.net处理框架(而这个asp.net框架就是今后我们要学习的重点部分)在这个asp.net框架里面,它就会通过我们的.net Framework一系列的组件然后去处理我们这一条请求。首先它会找到我们这条请求的页面(我们这条请求有具体的页面,比如localhost:5650/Handler1.ashx这条请求的具体页面就是Handler1.ashx)
但是这个时候拿到的仅仅请求的url这个字符串,拿到这个字符串后,就会通过我们的反射创建这个Handler1.ashx文件的后台类Handler1.ashx.cs的对象(我们这里要创建对象呢?因为Handler1.ashx.cs这个页面后台类本身是一个类,那要使用这里类中的方法,就需要创建对象),创建完对象后,紧接着就调用public void ProcessRequest(HttpContext context)这个方法(这个方法简称PR方法),执行我们程序员自己写的代码,执行完毕后,将产生的代码交给Framework 然后Framework转交给中间处理程序aspnet_isapi.dll,由中aspnet_isapi.dll交给IIS,然后IIS返回给浏览器 (这就是一般处理程序的过程)


注意:一般处理程序 Handler1.aspx,我们展开这个Handler1.ashx后发现下面还有一个Handler1.ashx.cs的文件
其实这个Handler1.ashx其实是一个前台文件,Handler1.ashx.cs是后台类。我们在这个Handler1.ashx前台文件上右键,查看标记,就会发现其实这个前台文件里面的内容仅仅是<%@ WebHandler Language="C#" CodeBehind="Handler1.ashx.cs" Class="WebApp.Handler1" %>这么一段指令集,这段指令集指向它后台页面中具体的一个类,这个类就是Handler1.ashx.cs
,所以一般处理程序的Handler1.ashx前台文件的作用就是指定它后台的类是哪一个


当用户在浏览器端输入请求URL地址的时候,一敲回车,这个时候浏览器做的第一件事情就是根据用户输入的这个URL地址,把它封装成一个HTTP请求报文(如果是Get请求,没有任何表单提交的话,请求报文的最下方是没有任何数据的)浏览器把这个数据,更加DNS解析,找到对应的域名所对应的IP地址。然后把这个请求报文数据发送给对应的IP地址下对应的端口号,然后服务器端接收到这个请求报文以后根据你的端口号转到对应的网站进程,在网站进程里面接到你这个请求报文体,根据拟这个请求报文体进行解析,解析完毕以后找到你要请求对应的资源,如果是静态资源则直接由服务器读取磁盘上的静态文件把它当做bety[]数组,以二进制的方式直接发送给浏览器,这样浏览器就会将这个二进制流转换成HTML代码,然后用户就可以看到当前请求返回的结果,注意:服务器将响应数据返回给浏览器之前要先拼接一个响应报文头,然后中间空一行,后面就是响应报文体


如果用户请求的是一个动态资源(aspx,ashx文件),服务器还是首先解析我们这个请求报文,解析的时候会把我们这个请求报文解析到HttpContext这个上下文类里面,这个HttpContextL类中又包含了HttpRequest,和Response,HttpResponse两个对象(这两个对象其实也是一个类)当把请求报文解析到HttpRequest中以后,接下来要处理请求的这个动态网页,处理动态网页的时候,首先服务器会动态创建一个HttpApplication这个对象,在这个对象里面对请求资源进行处理,处理完毕以后把响应的内容返回给浏览器,接下来浏览器解析这段响应报文请求



一般处理程序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebApplication1
{
    /// <summary>
    /// Handler1 的摘要说明
    /// </summary>
    public class Handler1 : IHttpHandler
    {

        //这个ProcessRequest方法我们简称PR方法,它是IHttpHandler接口中的方法,因为Handler1这个类继承了IHttpHandler接口,所以在这里实现了这个PR方法
        public void ProcessRequest(HttpContext context)
        {

            //在这里面就是我们程序员自己写的代码
            context.Response.ContentType = "text/plain";
            context.Response.Write("Hello World");
        }

        //这个IsReusable属性也是IHttpHandler接口中的一个属性,因为Handler1这个类继承了IHttpHandler接口,所以在这里实现了这个IsReusable属性
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

在 ASP.NET WebForm中使用 Route

使用过ASP.NET MVC的同学可能对Route已经有些接触,在ASP.NET WebForm中为实现类似的功能也许会使用URL Rewrite。本文将介绍在ASP.NET WebForm中使用Ro...
  • WuLex
  • WuLex
  • 2017-03-30 23:14
  • 433

ASP.NET WebForm Best Practice 之PostBack

http://www.cnblogs.com/hjf1223/archive/2008/01/03/1024969.html关于PostBack,我曾经也写过一篇博客《深入理解 __doPostBac...
  • plean
  • plean
  • 2011-07-04 14:13
  • 266

ASP.NET MVC与WebForm的区别

1.传统WebForm开发中存在的一些问题   传统的ASP.NET开发中,微软的开发团队为开发者设计了一个在可视化设计器中拖放控件,编写代码响应事件的快速开发环境。然而,它所带来的负面效应是: ...

文件上传 下载 一般处理程序和webForm联系以及asp.net内置对象

1.HttpHandler实现图片上传 (1).表单元素使用 文件选择框 控件。 (2).表单设置enctype="multipart/form-data",本质上就是设置浏览器提交表单的数据时,...

ASP.NET WebForm 的CheckBoxList控件通过js获取Value值问题

ASP.NET WebForm 的CheckBoxList控件通过js获取Value值问题故事背景最近在改之前很早的一个项目,用的还是WebForm开发的。追加功能之后,有个地方是弹出层来填写表单信息...

在ASP.NET WebForm简单实现伪静态,通过(System.Web.Routing)

开发环境:VS2010      VS2010已经集成了Routing组件,在ASP.NET MVC中,我们通过URLRouting实现了Controller,Action的URL控制。在WEBF...
  • wyqlxy
  • wyqlxy
  • 2011-08-25 13:08
  • 2586

asp.net WebForm程序删除.designer.cs文件之后的故事

1.介绍 正常情况下添加一个WebForm程序结构如下(命名为:myWebForm.aspx) 文件说明:.aspx文件:书写html代码部分,以及javascript,css等代码书写及引用   ...

访问Access数据库实现DropDownList二级异步联动(ASP.NET WebForm开发方式)

访问Access数据库实现DropDownList二级异步联动(ASP.NET WebForm开发方式)

易信公众平台开发(ASP.NET WebForm) Using Senparc.Weixin.MP SDK

本文主要简单介绍如何通过Senparc.Weixin.MP SDK开发易信后台, 0.为什么可以用专门为微信开发的SDK 这个在Senparc.Weixin.MPSDK的官网里面有所提及, 你可以比较...

[ASP.NET]實作Webform的畫面繼承

開發過Winform的人都曉得,Winform的畫面是可以繼承的,只要在父類別拉好UI並寫完對應的事件,接著繼承的子類別都可以直接享有父類別所有的UI與功能,這對開發來說是很省時省力的,但偏偏在ASP...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)