ASP.NET分析(一)--运行机制

从ASP.NET MVC迁移到ASP.NET Core的分步指南 分步指南 这是有关将项目从ASP.NET MVC框架迁移到ASP.NET Core的实用指南。 由nopCommerce开源项目团队编写的分步说明可以轻松地应用于任何ASP.NET MVC项目。 它还描述了为什么您可能需要升级,以及为什么尚未跟上进度的项目应该考虑它。 为什么要移植到ASP.NET Core? 在继续进行从ASP.NET MVC移植到ASP.NET Core的步骤(以no... 阅读详情
 
ASP.NET的运行机制
1.   相关资源:
MSDN中关于ASP.NET应用程序生周期
ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/de0d8a1c-b1bc-48e1-b246-26e32289a82f.htm
 
2.   建立相关对象的过程
(1) 第一次请求时创建HttpRuntime对象:
 
(2) 为每个请求创建对象 (HttpContext)
(3) 为每个请求创建 HttpApplication 对象:
3.   相关对象
1.       HttpRuntime
2.       ApplicationManager
3.       HostingEnvironment
4.   通过ashx分析
通过ashx可以看出ASP.NET的运行机制。
ashx与Java的Servlet类似,是原生态的处理http请求和输出的对象。
1.1.分析ASP.NET 2.0的默认配置
(1) 配置
<httpHandlers>
     <add path="trace.axd" verb="*" type="System.Web.Handlers.TraceHandler" validate="True" />
     <add path="WebResource.axd" verb="GET" type="System.Web.Handlers.AssemblyResourceLoader"
          validate="True" />
     <add path="*.axd" verb="*" type="System.Web.HttpNotFoundHandler" validate="True" />
     <add path="*.aspx" verb="*" type="System.Web.UI.PageHandlerFactory" validate="True" />
     <add path="*.ashx" verb="*" type="System.Web.UI.SimpleHandlerFactory" validate="True" />
     <add path="*.asmx" verb="*" type="System.Web.Services.Protocols.WebServiceHandlerFactory,
System.Web.Services, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="False" />
     <add path="*.rem" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="False" />
     <add path="*.soap" verb="*" type="System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory,
System.Runtime.Remoting, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          validate="False" />
     <add path="*.asax" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ascx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.master" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.skin" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.browser" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sitemap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.dll.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
     <add path="*.exe.config" verb="GET,HEAD" type="System.Web.StaticFileHandler" validate="True" />
     <add path="*.config" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.cs" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.csproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vbproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.webinfo" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.licx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.resx" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.resources" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.mdb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.vjsproj" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.java" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.jsl" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ldb" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.dsdgm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ssdgm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.lsad" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ssmap" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.cd" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.dsprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.lsaprototype" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sdm" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.sdmDocument" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.mdf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*.ldf" verb="*" type="System.Web.HttpForbiddenHandler" validate="True" />
     <add path="*" verb="GET,HEAD,POST" type="System.Web.DefaultHttpHandler" validate="True" />
     <add path="*" verb="*" type="System.Web.HttpMethodNotAllowedHandler" validate="True" />
</httpHandlers>
(2) 分析
观察.NET FrameWork 2.0的默认配置,我们发现,其中有如下几个类是用来处理不同类型的文件的:
后缀
类
说明
.aspx
System.Web.UI.PageHandlerFactory
Asp.net 的处理程序
.ashx
System.Web.UI.SimpleHandlerFactory
纯 http 请求的处理程序
其它
System.Web.HttpForbiddenHandler
禁止请求的处理程序
 
System.Web.StaticFileHandler
 
*
System.Web.DefaultHttpHandler
 
trace.axd
System.Web.Handlers.TraceHandler
跟踪程序
WebResource.axd
System.Web.Handlers.AssemblyResourceLoader
 
.rem
System.Runtime.Remoting.Channels.Http.HttpRemotingHandlerFactory
.NET Remoting 处理程序
我们发现,所有的配置文件中,都实现了IHttpHandlerFactory接口,分析这个接口,可以看出,这是一个Factory,这个Factory通过不同的配置建立不同的处理http的对象。
       IHttpHandlerFactory的结构:
 IHttpHandler GetHandler()
返回实现 IHttpHandler 接口的类的实例。 
 ReleaseHandler
使工厂可以重用现有的处理程序实例。 
 (3) 结论
1.ApplicationManager.CreateObject() 创建HostingEnvironment
2.HostingEnvironement
3.HttpRuntime. ProcessRequest()
private void ProcessRequestInternal(HttpWorkerRequest wr)
{
      HttpContext context1 = new HttpContext(wr, false);
      context1.Response.InitResponseWriter();
      IHttpHandler handler1 = HttpApplicationFactory.GetApplicationInstance(context1);
      if (handler1 is IHttpAsyncHandler)
      {
             IHttpAsyncHandler handler2 = (IHttpAsyncHandler) handler1;
             context1.AsyncAppHandler = handler2;
             handler2.BeginProcessRequest(context1, this._handlerCompletionCallback, context1);
       }
       else
       {
             handler1.ProcessRequest(context1);
             this.FinishRequest(context1.WorkerRequest, context1, null);
       }
      }
      catch (Exception exception1)
      {
            context1.Response.InitResponseWriter();
            this.FinishRequest(wr, context1, exception1);
      }
}
4.各种页面处理做各种类型的ProcessRequest。
aspx如下:
private void ProcessRequestMain(bool includeStagesBeforeAsyncPoint, bool includeStagesAfterAsyncPoint)
{
     
}
其序列图如下所示:
而ashx就是用户实现了IHttpHander接口。
 
Ado/Ado.net与Asp/Asp.net关系 前言 * Asp(Active Server Pages),动态服务页面; * Asp.Net (Active Server Pages基于.NET Framework),基于.net平台的动态服务页面,又称Asp+; * Ado (ActiveX Data Objects),ActiveX数据对象,用于表示用户数据库中的数据结构和所包含的数据 * Ado.Net(ActiveX Dat 阅读详情

相关推荐

【AI+教育】别再让 Cursor 只当编辑器了!4 步解锁 Claude 官方技能!

本文介绍了在Windows环境下通过OpenSkills工具在Cursor中调用Claude AI技能的方法。主要内容包括:1)安装Node.js环境;2)全局安装OpenSkills工具;3)安装Claude官方技能库;4)通过AGENTS.md文件同步技能;5)在Cursor中直接调用技能完成Excel、PPT等任务。文章提供了详细的操作步骤和示例,帮助用户快速上手使用AI技能提升工作效率。

奶爸的编程之路,也就一周冷个三天 751

Go并发编程:goroutine与channel实战指南

并发编程是现代软件开发的核心技术,通过多任务并行执行提升系统吞吐量。Go语言采用独特的goroutine实现轻量级并发,每个goroutine初始仅需2KB栈空间,由运行时系统智能调度。配合channel实现CSP通信模型,开发者无需处理传统线程锁的复杂性。在微服务和高并发场景中,合理使用worker pool和pipeline模式能显著提升性能。通过sync包的Mutex、WaitGroup等原语,可解决资源共享和协同问题。实际工程需注意避免goroutine泄漏和竞态条件,结合-race检测和pprof

weixin_30566111的博客 488

electron windows设置镜像地址环境变量报错npm error `ELECTRON_MIRROR` is not a valid npm option

如果你是在使用某个特定的脚本或配置文件,请检查该文件中是否有不正确的配置项,并进行相应的修正。确保你遵循electron的官方安装指南,并且没有包含不必要的或错误的配置选项。如果问题依然存在,可以查看npm的官方文档或者相关社区获取更多帮助。

qq_36158551的博客 3322

ASP.Net需要了解的web知识

<br />HttpModuler与HttpHandler<br />ASP.Net对每一个接收到的请求指派相应的HttpHandler来处理并呈现相应的内容,该指派取决于所接收请求的Verb和path内容,verb为请求Http的类型,Get和Post,Path为请求的文件的路径和名称。<br /> <br />ASP.Net通过一组类来处理客户端的请求,这种模式叫管道模式,HttpModuler与HttpHandler是管道上的两个处理环节,使用的类:HttpWorkerRequest定义了处理请求的基

Discovery的专栏 1240

用STM32F103C8T6和TB6612驱动模块,从零搭建一辆能避障循迹的智能小车(附完整代码)

本文详细介绍了如何使用STM32F103C8T6和TB6612驱动模块从零搭建一辆能避障循迹的智能小车。内容涵盖硬件选型、电路设计、底层驱动配置以及智能行为算法实现,并附有完整代码示例,帮助开发者快速掌握嵌入式开发的核心技术。

weixin_42641741的博客 444

一起学习Avalonia(十三)

Avalonia 前面已经简单介绍了一下相关开发,有一个系统的了解。 到今天Avalonia已经基本成熟,但是扩展支持的还是不可能达到大企业的,我估计这也不可能。考虑了下,微软的MAUI框架可能会普及性更高,Avalonia也是我无意间知道的。 微软毕竟是会宣讲的全球。并且微软全球研发投入很大,全部专职开发,这种速度当然大。但是MAUI根据计划,可能还要很长时间,而且是社区支持Linux,估计时间更久。这不能适应现在的国产化开发。 预计一段时间还是需要Avalonia作为优先。当前Avalonia使

jinyuttt的专栏 4086

Asp.Net Mvc 运行机制原理分析

最近一段时间接手过的项目都是基于Asp.Net的,以前对aspnet运行机制有一个大概的了解,总觉得不够透彻,按自己的理解来分析一下。 Asp.Net 运行机制 理解mvc运行原理的前提是要了解aspnet运行原理,这方面网上资料多如牛毛,我这里就大致说一下aspnet生命周期 Http请求到IIS后,如果是静态资源则IIS读取后返回客户端,动态请求被isap.dll 转发自net托管平...

vs2008ASPNET的专栏 5195

Blender关于GIS安装及使用天地图

Blender下载安装及GIS插件的安装及使用

Miss_SQ的博客 6970

ASP.NET之旅--浅谈Asp.net的运行机制(二)

三、Asp.net底层运行机制 上节中我们从Http请求在Asp.net中的运行过程进行了分析,但是对于真正核心的东西我们并没有说明,那接下来我们将问题上抛,从底层类和对象的创建层面上来看Asp.net的运行机制。 2、理解HTTP.sys HTTP.SYS:运行于Windows核心(Kernel)的一个组件,它负责侦听(Listen)来自于外部的HTTP请求(通常来自网络中另一台计算机上的

航帆远洋 4733

MRI图像切片(nii格式转2D)

代码参考:将一个MRI(nii格式)数据进行切片 想要批量抽取MRI数据的几个切片,借鉴了上述代码的Python版本,原始代码抽取了全部切片。本次实验主要是抽取sMRI的横断面(axial)方向的其中30张切片,数量根据自己需求可自行设置。 import scipy, numpy, shutil, os, nibabel import sys, getopt import imageio def niito2D(filepath): inputfiles = os.listdir(filep

chs_502的博客 7548

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9499

ASP.NET MVC学习笔记-MVC运行机制之源码剖析

 学习ASP.NET MVC已经有段时间了,以前都是断断续续的了解了下, 对于ASP.NET MVC路由及运行机制一直不是很了解, 在网络上找了好多资料无非都是讲解了下如何添加ASP.NET MVC路由及创建自定义视图引挚等. 因此最近这几天, 下载了ASP.NET MVC源码好好研究了一翻, 将其运行机制记录下来, 一来整理下自己的理解思路, 加强自己的理解, 二来也希望对学习ASP.NET的后

study_live的专栏 5538

Harness Engineering:让Coding Agent真正落地生产

本文将带你系统性地了解如何让Coding Agent真正落地生产,核心是依托(全球领先的持续交付、云成本管理、 feature flagging、安全治理一体化平台),结合企业级AIDD(AI-Driven Development)的工程化实践,构建一套可信赖、可观测、可扩展、可治理的Coding Agent落地体系。核心概念与理论基础:什么是Coding Agent?它和普通的AI代码补全工具(比如GitHub Copilot)有什么区别?什么是Harness Engineering?

移动开发前沿的博客 455

简述ASP.NET的页面运行机制

在深入学习ASP.NET之前,首先需要先了解一下ASP.NET的页面运行机制:   浏览以下内容需要对ASP.NET管道有一定的了解,附上很不错的几个链接: 选择HttpHandler还是HttpModule?  HttpModule的作用 HttpHandler与HttpModule的用处与区别    当第一次访问页面时,页面请求首先依次经过HttpHandler和HttpModule...

zam183的博客 1016

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

asp.net的简介和基础知识

ASP.NET不是一种语言,而是创建动态Web页的一种强大的服务器端技术,它是Microsoft .NET Framework中一套用于生成Web应用程序和Web服务的技术,利用公共语言运行时(Common Language Runtime)在服务器后端为用户提供建立强大的企业级Web应用服务的编程框架。ASP.NET虽然都是微软公司的两项Web技术,但由于它们诞生的时间与背景不同,所以它们之间的区别相对比较大,主要区别在开发语言、运行机制、运行环境、开发方式等方面的不同。

cen_jmc的博客 6253

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ASP.NET运行机制原理

一、浏览器和服务器的交互原理 (一)、浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收和处理的,它会分析接收的请求信息,从而按照请求信息来找到服务器电脑上的文件,经过处理,最终将生成的内容发回到浏览器。 简单的说就是:由浏览器生成一条“命令”,通过互联网发给另一台电脑的某个软件(服务器软件);服务器软件接收到“命令”,就分析理解这个“命令”,然后按照“命令”找

小猪快跑 963

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ASP和ASP.NET的区别

看到这组词让我想到了VB和VB.NET。VB.NET是VB的下一个版本。微软不是简单的在VB6的基础上增加了一些新特性,而是重新更换定制了这个产品。开发者可以使用杨业船体和ADO.NET快速开发可扩展的网站;使用继承,支持面向对象编程;可以充分利用.NET框架提供的一切。 回想VB6和VB.NET

许小乖……是总攻 2095

Web ASP.Net运行机制

ASP.NET运行机制原理 一、浏览器和服务器的交互原理 (一)、浏览器和服务器交互的简单描述: 1.通俗描述:我们平时通过浏览器来访问网站,其实就相当于你通过浏览器去另一台电脑上访问文件一样,只不过浏览器的访问请求是由被访问的电脑上的一个 WEB服务器软件来接收和处理的,它会分析接收的请求信息,从而按照请求信息来找到服务器电脑上的文件,经过处理,最终将生成的内容发回到浏览器。 ...

weixin_30376453的博客 86

ASP.NET MVC的运行机制--url的全局分析

<br />全局<br />      首先我们来看一副图片      首先,用户通过Web浏览器向服务器发送一条url请求,这里请求的url不再是xxx.aspx格式,而是http://HostName/ControllerName/ActionName/Parameters的样子。这个请求被ASP.NET MVC的路由映射系统截获。(路由映射可以在Global.asax中配置,我们一会再说)路由映射系统按照映射规则,解析出控制器名ControllerName,Action名ActionName和各个参数

Kunar 5107

将 ASP 转换为 ASP.NET

将 ASP 转换为 ASP.NET升级至 Microsoft .NET本文将先从解释典型数据驱动的 ASP 应用程序开始,再接下来讨论将 ASP 应用程序移植到 ASP.NET目标·                 将 ASP 及 Microsoft ASP.NET 执行在相同的网页服务器上 ·                 分析一般的 ASP 应用程序 ·   

努力!! 6856

ASP.net的简单认识

前言      小编最近在进入BS的学习过程中,接触到了ASP.net的框架,那么它是什么,有什么作用呢? ASP.net是什么 一、web框架    小编在微软的官网上找到关于ASP.net的介绍:ASP.net是一个用.NET构建现代Web应用程序和服务的开源Web框架, 基于HTML5,CSS和JavaScript创建简单,快速的网站,并可扩展到数百万用户。

冯浩月 4868

ASP.NET运行机制

1 Http请求 如上图,我们先来真正了解一下什么是http请求,举一个简单的例子,你在浏览的一张网页上点击其中的一个超级链接”Microsoft程序员测试题”,如果这个链接到的地址是 http://www.frontfree.net/view/article_840.html ,那么浏览器会立刻向www.frontfree.net 这个服务器发送一条http请求.但是这个请求中不仅

yongyinmg的专栏 984
上一篇: 构建工具Ant的使用[转]
下一篇: 从对象的角度理解委托以及委托链的返回值获取
dobly
博客等级 码龄24年 1粉丝 13原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值