欢迎访问意彩娱乐官方指定网站,意彩娱乐平台打造娱乐平台行业领导者!

意彩位置:意彩 > 意彩新闻 > 意彩资讯 >

意彩代理在ASPNET中实现Url Rewriting

作者:意彩娱乐平台意彩时间:2018-10-09 09:58

  好像ISAPI使用法式一样, ISAPI过滤器也是一块块安装正在Web办事器上的非托管代码。 ISAPI使用法式用于对所领受的特定文件类型作出相应,而ISAPI过滤器含有对IIS天生的事务作出相应的代码(contain Code),以至能够编纂进出的数据。ISAPI也含有浩繁使用法式,包罗?

  如上所述, 能够筑立ISAPI过滤器并用于响应IIS激发的事务,同理,ASP.NET也供给了HttpModule用于相应ASP.NET引擎激发的事务,一个ASP.NET使用法式 通过设置装备安排能够具有多个HttpModule。ASP.NET引擎 每处置一个请求,便初始化一个响应设置装备安排好的HttpModule,并答应它 针对请求处置时期激发的事务天生响应的事务委托。隐真上ASP.NET引擎 处置每一个请求挪用大量的事务委托。FormsAuthenticationModule就是浩繁内嵌HttpModule中的一个,它 起首查抄能否利用表单授权,若是是的话,它 将查抄用户能否已授权,若是没有授权则主动把用户重定向到指定的登录页面。(即:正在asp.net中能够间接记真并判别用户登录授权的问题了!)。

  为了便于正在Web使用法式中真隐网址重写,我筑立了一个网址重写引擎,该引擎供给下列功效?

  一种较好的方式就是利用一种比力直不雅且容易回忆的体例来将网址暗示为: 乍一看很容易就会揣度这个网址所对应的内容极有可能会是显示粉饰品(Widgets)消息,这个网址就变得愈加容易回忆战!然后我告诉我的同事:“请查看这个网址:”不消我说第二遍,她可能一次就把地点敲到浏览器上了(你也能够正在亚马逊(的网站上如许测验测验一下)。很快就浏览器上就列出了粉饰品(Widgets)的内容。这里“荫蔽性”暗示:用户能够自行变动网址的末端,比方输入:就能看到全数分类有关的商品列表或者列出所有有关商品分类目次列表。

  设置装备安排<LookFor>节要利用正则表达式来进行字符串婚配战替代。(正在此咱们举一个例子来申明若何利用正则表达式来对字符串进行婚配战替代。)既然该查找模式是一个正则表达式,那么要留意避开对正则表达式保存字符串的间接利用。(正则表达式的保存字符串包罗有:.,?,^,$,等等,能够通过正在前面加上一个反斜线来援用这些保存字符,比方\.暗示援用一个句点)。

  除了将请求的文件扩展名映照到响应的ISAPI使用法式外,IIS还施行一些其他事情。比方 IIS还自动对发出请求的客户端用户进行授权,并果断已授权用户能否对其请求的文件具有拜候权限,正在一个请求历程的全数生命期内,IIS的处置履历了几个阶段,正在每一个阶段IIS都天生一个事务,而该事务能够被ISAPI过滤器及时操控的。

  留意:正在注册HttpHandler的时候必需留意HttpHandler所利用的文件扩展名必需曾经正在IIS中作指向擎的映照,正在.scott扩展名的例子中,若是咱们所利用的.scott扩展名若是没有正在IIS中作指向ASP.NET引擎的映照的话,假定对foo.scott文件发出请求,意彩娱乐官网登录该请求 将导致IIS将foo.scott文件内容间接呈隐给客户端,为了可以大概让HttpHandler处置该请求,必需将.scott扩展名正在IIS中作指向ASP.NET引擎的映照,之后IIS才能准确地将.scott的请求转交给响应的HttpHandler。意彩资讯

  正在老版本ASP中,利用网址重写手艺的路子很少,要么写一个 ISAPI过滤器,要么采办第三方厂商供给的网址重写组件,然而正在微软供给的ASP.NET下你能够通过多种方式很简略地开辟出本人的网址重写软件,以餍足本人各类分歧的必要。本文将战你一路会商这门针对ASP.NET开辟职员的真隐网址重写的手艺,然后举一些网址重写隐真使用的例子。正在咱们深切切磋网址重写手艺的细节之前,咱们先看一下一样平常利用网址重写手艺真隐的场景。

  所有通过ASP.NET引擎解析的请求最终被迎交一个HttpHandler或者HttpHandlerFactory(一个HttpHandler只是简略地前往一个用于处置该请求的HttpHandler的真例。)最终的委托呈隐并相应所请求的HTML编码,并发迎回IIS,IIS则将HTML前往给请求客户端。

  <add varb=* path=.scott type=type />。

  本文所切磋的用ASP.NET真隐的网址重写手艺就是 基于ISAPI过滤器用于网址重写的手艺内容,然而咱们依然要会商一下事真是利用ISAPI过滤器仍是利用ASP.NET使用法式供给的手艺来真隐网址重写手艺。

  此中type属性为HttpModule的标识号战类库名称,name属性则为该模块与一个较为敌对的名称便利 正在Global.asax挪用。

  ASP.NET问世之前,正在IIS Web办事器上的网址重写功效必要通过ISAPI过滤器来真隐,自主这个家伙问世后咱们就能通过ASP.NET来真隐URL重写了,由于ASP.NET的注释引擎与IIS有极大的类似之处,发生这些类似性次如果由于 ASP.NET!

  正在所有HttpModule被初始化后,HttpHandlerFactory就起头被真例化。把网址重写放正在这些事务场合的最月朔个里头挪用的时候,也会碰着不异的问题:文件授权将会失效。若是非要依赖于Windows验证战文件验证的时候,你可能得利用HttpModule来挪用网址重写了。

  正在切磋若何真隐网址重写这项手艺之前,很有需要领会一下IIS是处置所领受的Web请求的机造。 当一个Web请求达到IIS Web办事器时,IIS会按照所请求的文件后缀名来决定若那边置该请求,IIS能够处置诸如HTML页面、图片、静态内容,或者将请求转发给ISAPI使用法式,由该ISAPI使用法式处置后天生HTML静态内容前往给IIS,最初由IIS将请求成果发迎回给客户端。(一个ISAPI使用法式就是一套编译好能随时正在后台运转的类库,它的使命就是按照请成有关的内容。)?

  比方:若是IIS领受到一个对Info.asp的请求,它会将该请求转交给 asp.dll来处置,该ISAPI使用法式调出并施行所请求的ASP页面,然后把天生的HTML代码前往给IIS,IIS最初把内容发迎回请求客户端。对付ASP.NET页面,IIS则将请求转交给名为 aspnet_isapi.dll的ISAPI使用法式来处置,该ISAPI使用法式 挪用托管的ASP.NET事情历程来处置该请求,并将天生的HTML代码前往给请求客户端。

  我想还该当正在上述列表中再添加一条: 能否便于回忆。这个地点没有一个处所合适Neilson尺度的任何一条,也未便于回忆。当然,对付有经验的收集开辟专家来说,他们很相熟这种键值对形成的查询参数布局系统,然而对付通俗用户来说输入这些带有参数的网址真正在是太贫苦了。意彩娱乐官网注册

  正在微软.NET Framework 1.0版本中,RewritePath()方式领受一个新径的简略字符串,正在其内部HttpContext类的RewritePath(string)方式内正在地更新Request对象的径战查询参数。除了RewritePath(string)方式之外,.NET Framework 1.1版还供给了别的一些重载版本,此中一个重载版本事受三个输入字符串参数,这种瓜代的重载情势不只仅只是设置Request对象的径战查询参数这些属性,而是设置更深层的变量,这些变量用于为PhysicalPath、PathInfo、FilePath属性计较Request对象值。

  网址重写手艺除了用于将庞大的网址简略化之外,它还能用于处置因网站目次调解或者其他缘由导致发生大量的有效链接战过时。

  为领会决这个微妙的问题,一个可能就是把网址重写放正在AuthorizeRequest事务中运转,可是正在利用这种方决URL授权战表单授权的非常时又引入了一个新的缺陷:文件授权会失效。当利用Windows验证的时候,FileAuthorizationModule查抄并验证已通过验证的用户能否具有足够的权限拜候特定的ASP.NET页面。

  ·Dispose(),当响应请求处置竣事并发迎回IIS挪用此方式,通过此方式施行最终所有的清算战收受接受法式。

  <SendTo>String to replace pattern with </SendTo>。

  那么什么时候正在HttpModule挪用网址重写符合呢?他决定于所利用的验证体例,当然若是晦气用验证体例的话,那么无论是正在BeginRequest事务、AuthenticateRequest事务仍是AuthorizeRequest事务中挪用网址重写没有多大区别,若是利用表单验证体例而且晦气用Windows验证体例的话,把网址重写放入AuthorizeRequest事务委托中挪用既可,若是利用Windows验证体例的话,把这项功效放入BeginRequest事务或者AuthenticateRequest事务挪用就行了。

  <SendTo>String to replace pattern with </SendTo>!

  真隐网址重写的一个较为平安的场所就是把它放正在正在BeginRequest事务中施行,这象征着若是要施行网址重写的话,正在浩繁内嵌HttpModule运转的时候他曾经完成了。这种路子的最终用处极尽形貌地表隐正在表单验证上。当用户拜候受限资本的时候,意彩登录意彩资讯 若是之前利用了表单验证,他会主动被重定向到指定的登录页面,正在顺利登录之后,用户被重定向回先前试图拜候的受页面。

  你能够自界说IIS, 将某一类扩展名映照到指定的ISAPI使用法式,图一显示了IIS办理东西中的使用法式设置装备安排对话框。意彩代理?

  果断用户能否已通过表单授权体例获与授权,若是没有的话则将用户重定向到指定的登录页面。

  下一章咱们着眼于若何筑立一个可重用的网址重写引擎,利用下文所提的这些示例均以真正在案例作为参照,正在作者主页上供给下载。先用用一个简略的网址重写的例子来切磋若何真隐网址重写,紧接着将操纵网址重写引擎则表达式的壮大处置威力来展隐真正“荫蔽”的网址重写手艺!

  <LookFor>pattern to look for</LookFor>。

  一旦HttpModule战HttpHandler被筑立后,必需向Web使用法式注册。若是要 向整个Web办事器HttpModule战HttpHandler只要简略的写入fig文件;若是是 由指定的Web使用法式挪用则需正在该法式的web.config设置装备安排文件中增添几行XML标识表记标帜。

  关于对IIS若何办理所领受的请求的细致切磋有些凌驾本文内容,,主要的是要领会擎只担任处置对扩展名曾经被准确设置装备安排映照到aspnet_isapi.dll的收集请求。

  每一条法则都用一个<RewriterRule>元素暗示,以<LookFor>节暗示查询模式,当查询模式发觉婚配字符串时便用<SendTo>节暗示的字符串进行替代。这些法则主上到下进行查询婚配,若是找到一个婚配则按此法则施行网址重写,而且遏造查找。

  · 能否拥有荫蔽性,也就是让用户通过一个虚拟的看似成心义的地点拜候指向该地点。意彩注册网址

  稍微花点时间看一看你作的网站里头的URL地点,你看到雷同如许的地点吗?也许你会出于某种目标把大量的页面文件主一个目次以至一个网站转移到其他处所,而很多拜候者出于小我乐趣或者钻研目标之前就曾经将原有网址珍藏了起来, 若是这时他主珍藏夹翻开该页面的时候发觉这曾经是坏链了。本文旨正在引见若何利用网址重写将那些“难看”的网址转换成比力有隐真意思的网址,使其便于回忆。比方将转换成如下地点:。咱们以至发觉 网址重写手艺能够处理令人头疼的404错误,或者说它能够筑立一个智能化的404错决方案。

  <add verb=verb path=path type=type />?

  咱们来切磋一下正在web.config中网址重写法则的设置装备安排节。起首必需正在web.config文件中指出能否必要正在HttpHandler或者HttpModule中挪用网址重写,正在web.config中,下文曾经蕴含了两个曾经被正文掉的设置装备安排节。

  <add type=URLRewriter.ModuleRewriter,URLRewriter name=ModuleRewriter/>。

  果断并确定该Microsoft Windows帐户能否对其请求的资本具有足够的权限。

  通过对该基类的承继,所有必要作的事情就是筑立一个承继自BaseModuleRewriter的。

  网址重写手艺不单能够正在IIS Web办事器一级通过ISAPI过滤器真隐,并且还能够正在ASP.NET一级通过HttpModule或者HttpHandler真隐。本文次要关心正在ASP.NET一级真隐网址重写手艺,所以此时不必关心正在ISAPI使用法式中真隐网址重写的手艺细节,并且有良多第三方厂商供给的ISAPI过滤器。

  以前文所筑立的阿谁站点为例,能够通过/info/employee.aspx?empID=EmployeeID来拜候每一个雇员的消息。为了使这个网址愈加地拥有“荫蔽性”,咱们可能会利用愈加容易理解的拜候体比方:/people/雇员名.aspx。这里就有了一个网址重写的案例:当领受到对/people/ScottMitchell.aspx的请求的时候,咱们就得利用网址重写使得对该页面的请求被重写指向到先前利用的/info/employee?EmpID=1001地点。

  <LookFor>pattern to look for</LookFor>?

  筑立一个数据操作的ASP.NET法式最常见的就是一个aspx页面后面带上一些查询参数调集。比方正在设想一个电子商务网站的时候,假定你设想了一项功效答使用户浏览待售的商品,为了愈加便利操作,意彩官方网站你设想了一个页面displayCategory.aspx将商品依照给定的分类显示,那么该分类下的商品显示页面上该当正在页面文件对应网址后面加上了一个商品分类的查询参数,比方用户要查询待售的“粉饰品”,正在数据库中所有的粉饰品数据对应的分类编号CategoryID的值为5,那么用户会拜候如下网址:。

  正在ASP.NET中真隐网址重写很简略,意彩代理 只要挪用System.Web.HttpContext类的RewritePath()方式即可。HttpContext类中蕴含相关于特定HTTP请求的HTTP规范消息。ASP.NET引擎每领受到一个特定请求后便针对该请求筑立一个特定的真例,这个类蕴含一些属性诸如:Request战Response属性,别离供给对请乞降相应的拜候;Application战Session属性供给对Application变量战Session变量的拜候;User属性供给对已授权用户消息的拜候。

  如上所述,网址重写是真隐一种截与网址请求并将其进行处置后主头指向到一个指定的网址的历程。 正在网址重写施行的时期,响应处置法式处置被请求的网址,主中提与出有关的值,然后主头指向一个新的指定地点。比方:因为一次网站目次调解,原有的 /people/ 子目次下的所有网页全数挪动到/info/employees/目次,原拜候者主珍藏夹或者其他什么处所点击链接发出拜候/people/目次下的文件的请求时,你必定但愿他仍是能通过原有地点看到战本来不异的页面,但隐真上看到的倒是网址重写指向的新目次下的响应文件。

  ·能够正在web.config文件中为页面开辟者界说其所利用的网址重写引擎的法则!

  正在ASP.NET一级来施行网址重写,既能够利用HttpHandler,也能够利用HttpModule。当利用HttpModule的时候,必需决定若是该网址必要被重写的话,事真该当正在整个请求的生命周期时期的那一个点来利用。乍一看着有些,可是这个决定以严重并且微妙的体例影响到你的使用法式。之所以作出对网址重写点的取舍是由于内嵌的ASP.NETHttpModule利用Request对象的属性值来完本钱人的事情(记忆一下重写径对Request对象的属性值的转变),这些内嵌HttpModule战响应事务的亲近关系枚举如下。

  非论设置装备安排利用<HttpModules>仍是<httpHandlers>挪用网址重写,除此之外还须设置装备安排网址重写法则,一条重写法则包罗两项字符串:请求URL中的查找模式战针对该模式的婚配顺利后的替代字符串。该消息正在fig文件顶用下列标签形容!

  · 答应肆意数量的HttpModule操控发生的事务,这与IIS中的ISAPI过滤器雷同!

  阐发若何利用微软供给的ASP.NET来对动态发生的URL地点进行网址重写。 网址重写是真隐一种截与网址请求并将其进行处置后主头指向到一个指定的网址的历程。作者自己正在对各类真隐网址重写的手艺进行钻研战切磋后得出的经验战方式,但愿能对您有所助助。

  同上雷同,当把网址重写放正在BeginRequest事务或者AuthenticateRequest事务中运转的时候,UrlAuthenticationModule也发觉了网址重写指向的网址,这象征着若是正在该使用法式的web.config文件中<location>节为特定的网址设置装备安排特定的授权地点的话,你得援用重写所指向的网址。

  查抄并确认请求者能否对所拜候的网址具有权限。该Url授权能够正在fig文件的<authorization>战<location>元素中设置装备安排!

  注:用上述简略的变动网址内容的方式来构想一下隐在的比力风行的Blog网站天生的网址。比方:要查询2004年1月28日所发的帖子,只要输入 即可,若是将网址淘汰为 则显示 2004年1月份的帖子 ,同样将月份淘汰掉获得 则显示出2004年整年所发的帖子。

  筑立一个蕴含雷同如许网址的网站最终有两种成果,起首主最终用户的角度来察看,这个网址有些芜杂, 可行性阐发专家Jakob Neilson(主页: ) 取舍网址显示体例时候思量如下要求(参考网址:)!

  图二描画了一个针对ASP.NET资本的请求所颠末的处置流程。起首,IIS领受到该请求并将其转交给aspnet_isapi.dll。其次,ASP.NET引擎将一些HttpModule初始化。最初,最终的HttpHandler被挪用,天生响应的标识表记标帜言语,并将其前往给IIS,最终前往到请求客户端。

  <add verb=* path=*.aspx type=URLRewriter.RewriterFactoryHandler,URLRewriter />!

  除了所述方式外,网址重写也能够放入HttpHandler或者HttpHandlerFactory中挪用。HttpHandler是一个担任针对特定请成响应内容的类,而HttpHandlerFactory前往一个HTTP的真例,该真例针对特定请成响应内容。

  记忆上文,每一个领受到的请求响应的HttpHandler来处置并呈隐响应内容,该决定于所领受请求的verb战path的内容,verb为HTTP请求的类型:GET或者POST,path则为请求的文件的径战文件名。若是咱们筹算用一个HttpHandler来处置所有GET类型战POST类型的而且文件扩展名为.scott的内容,能够正在fig响应设置装备安排节中插部下列标识表记标帜。

  本节只切磋通过HttpModule来真隐网址重写,要领会若何通过HttpHandler来真隐网址重写请下载本文供给的代码。

  记忆正在IIS中,一项请求最初被转交给一个ISAPI使用法式处置,该使用法式针对每一项请求进行处置并前往响应的数据。比方,客户端发出一个拜候典范ASP页面的请求,IIS将该请求转交给asp.dll法式处置,asp.dll针对该请求施行asp页面内容,并前往HTML编码。ASP.NET也利用了雷同的伎俩,ASP.NET引擎正在将这些HttpModule初始化后,果断并决定挪用响应的HttpModule来处置该请求。(问:怎样法式操作httpModule)?

  · 将请求的资本委托给HttpHandler处置,这与IIS中的ISAPI使用法式雷同。

上一篇:意彩娱乐平台可靠吗正则表达式匹配URL或者网址

下一篇:意彩平台打印机连接到url