知识大全 浅谈ASP.NET的内部机制(一)

Posted 片段

篇首语:学在苦中求,艺在勤中练。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 浅谈ASP.NET的内部机制(一)相关的知识,希望对你有一定的参考价值。

浅谈ASP.NET的内部机制(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  前言 当一个Http请求发送给一个aspx页面时 服务器进行了哪些操作?又如何来解析这个请求?ASP NET在接收请求后是怎么运行的 如怎么编译以及怎么样用托管的代码来运行的?……理解这些问题 使我们可以更加好的开发ASP NET

   当我们在浏览器中请求一个ASP NET网站的某个页面的时候 如 我们在浏览器中输入 x 这个请求就被发送到了服务器(当然了 这个网站是部署在IIS中的) 当请求到达了服务器之后 那么IIS就开始进行一系列的操作 注意 不是每个请求都一定会由ASP NET来运行处理的 大家稍后就会明白为什么

   在IIS中有一个组件 sys 其实这个组件的作用很简单 就是验证请求的url 如之前的 x 如果请求的URL不符合 sys的要求 那么这个请求就不会被传递给ASP NET的处理程序 这样就在IIS这道门槛这些阻止了不合法的url请求 这样ASP NET就不用处理这个不合法的请求 就减轻了服务器的压力

  下面 我们就来看看这个 sys到底是怎么样处理请求的url的 当大家明白这个问题后 就可以帮助我们解决很多的以前遇到的问题

  首先请大家看看下面的图            

  当发送一个请求来请求页面的时候 sys就会检查这个请求的url和headers的总的大小 包含检查url中有关查询字符串的大小 如demo aspx?username=demo 也会检查cookie的大小 把这些所有的加起来 看看它们是否超过了 KB 如果超过了 请求就失败了 所以请求根本就没有传递给ASP NET

  而且在 sys检查url的时候也有很多的要求的 如我们之前的那个url

  x

  这个url是由localhost Demo aspx 这些路径的片段组成的 每一个由 / 分割的字符串都是一个路径片段 本例中就有两个路径片段 在默认情况下 sys要求一个url的路径片段不超过 个 并且每个路径片段的大小也不要超过 个字母 但是注意 如果在Demo aspx后面有查询字符串 Demo aspx?page= 那么这个片段就可以超过 个字母的限制 即 Demo aspx?page= 可以更大 但是不管怎么样 这些url的大小 如之前所说的 不能超过 KB 如果没有通过 sys的要求 IIS就发送一个 的错误

  之前也说了的 那是默认的这只 其实这些设置我们是可以在注册表中改的 但是默认设置已经很不错了 所以一般没有必要改

   当请求的url通过了 sys的检查后 请求就会传递给aspnet_filter dll 下面简称filter

  其实这个filter做两件事 将url中的无cookie的票据转换为Http Headers 保护ASP NET的相应的目录

  首先来看看第一个作用 检查url中的无cookie信息 并且转换为Http Headers

  大家应该明白ASP NET 中的新特性-支持无cookie 即cookieless 因为我们在进行验证的时候一般是基于Forms验证 而这种验证方式是把信息保存在cookie中的 但是有的用户的浏览器是禁用了cookie的 所以为了使得我们可以继续用这个验证方式 就把验证信息保存为无cookie 大家可以去查看有关这方面的资料 来看看下面的一个url

  //localhost/demo/(S(tuucni xfzj xqx mnqdg ))/Default aspx

  我们其实把有关的信息存储在了url中 如上面的 S 就标识在后面括号 () 的信息就是无cookie的信息(tuucni xfzj xqx mnqdg )

  来看看 S 是什么

  S—Cookieless ticket for session state

  A—Cookieless ticket for anonymous identification

  F—Cookieless ticket for forms authentication

  其实filter并不知道这些标识(如 S )的意义 只是filter检查url中是否包含这些标识 并且这些标识后面还有 () 如果在url中检查到有这些标识 那么filter就把这些标识转换为Http Headers 并且在url中删除这些标识 我们本来请求的是x页面 但是如果filter不删除标识 那么我们请求//localhost/demo/(S(tuucni xfzj xqx mnqdg ))/Default aspx是不存在的 就会返回一个 错误(找不到请求的文件)

  现在我们来看看filter的第二个作用的 保护ASP NET的相应的目录

  在我们开发的ASP MET网站中 有很多的文件目录是不允许访问的 如我们存放数据的App_Data App_Code等 所以filter就会检查请求的url中是否包含这样的字符 //localhost/demo/App_Code/…一旦发现有这样的字符串出现 甚至是以 App_ 开发的任何字符串 如 App_MyFolder 这个请求就会被拒绝了 但是 假如你的项目中已经有一个这样的以 App_ 命名的目录 如果你非要可以访问这样的目录 可以在注册表中修改设置HKEY_LOCAL_MACHINE\\Sofare\\Microsoft\\ASP NET

cha138/Article/program/net/201311/12257

相关参考

知识大全 浅谈ASP.NET的内部机制(二)

浅谈ASP.NET的内部机制(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  上次已经说到了

知识大全 浅谈ASP.NET MVC Membership权限机制

浅谈ASP.NETMVCMembership权限机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 浅谈ASP.NET MVC中TempData的实现机制

浅谈ASP.NETMVC中TempData的实现机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 ASP.NET内部机制实现计划任务代码

ASP.NET内部机制实现计划任务代码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNE

知识大全 浅谈ASP.NET 4.0 SEO增强中的UrlRouting

浅谈ASP.NET4.0SEO增强中的UrlRouting  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 浅谈ASP.NET MVC中的FluentHtml与连续接口

浅谈ASP.NETMVC中的FluentHtml与连续接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET内部原理

ASP.NET内部原理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在以前的ASP时候当请求一

知识大全 浅谈ASP.NET报表控件

浅谈ASP.NET报表控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  项目中有报表图形化的需

知识大全 浅谈ASP.NET中render方法

浅谈ASP.NET中render方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 浅谈ASP.NET与HTML页面关系

浅谈ASP.NET与HTML页面关系  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET