Pinterest:让非死不可汗颜的略微巨头[电子商务转 csdn]

  ·
将请求的资源委托给HttpHandler拍卖,这同IIS中之ISAPI应用程序类似。


电子商务 1
贪图四.在网址上充足“隐蔽性”
**4.甩卖回送数据

http://news.csdn.net/a/20120308/312880.html

  当创立并编译了之近乎后,将这么些补充加至引用目录即可在该ASP.NET
Web应用程序中利用。为了拿故HtmlForm恍如替换,只需要简地于页面顶部添加下列代码:

Pinterest:让非死不可汗颜的略微巨头

2012-03-08 08:36 | 4316赖阅读 | 来源:第一经济日报 【已发3条评论】刊登评论

关键词:张罗网络,电子商务,Facebook,Pinterest
| 作者:张京科 | 收藏这首音讯

电子商务 2

以过去,硅谷和互联网奇迹般造出了重重明星集团,近来顿时无异于神话仍旧以连续。

假定一个网站首页上爆发上千摆设图纸,且看上去拉非到底,这样的筹划在往之中华互联网Web1.0时代,毫无疑问会让网民及网站管理者骂个狗血淋头。不过时代总是以转换,这样的网站设计,竟然就改为Web2.0时硅谷最热点之一个网站。

有美利哥地点媒体早已拿这家名叫吧Pinterest的美利哥打交道图片分享网站名为“硅谷最被关注的创业公司有”,其风头依然因了新兴巨头非死不可。

每当某种意义上,那些网站以神州的确已越非死不可,因为你无欲经过VPN等措施即使得一直输入网址来报到首页。

中国既往知名的网络社交达人、现任今日头条常务副总编辑李方曾代表,在炎黄召开论坛,只要抱有女孩,你虽无须担心男性用户。Pinterest宣传之规范为抱人类的天性:近来底用户以女性为主。

Pinterest似乎天生就是是也女创建的。不同之女性得于Pinterest上秀好的图形、宠物或男友和厨艺和男女齐,设计师为堪在
下面找到自己之灵感,朋友等尽管于图下边刊出评论。于是,这家就生20叫作员工的网站已变为硅谷历史上发展尽抢之网站。依据互联网流量监测单位亚历克斯(Alex)a
的多寡,Pinterest已经改为全美访问量第16很之网站,超过于CNN和ESPN,在全球网站排行为坐落第50称作。

2003年毕业为洛桑联邦理工大学政治学专业的Pinterest创始人Ben
Silbermann,不乐意从事父母的家庭口腔科诊所职业,而是在了同小咨询集团,后来同时进入Google担任客户补助。可是以工程师文化之信用社里,西尔伯曼认
为紧缺丰盛的升空间,在二〇〇八年金融危机暴发前夕,他控制出去创业,在山景城科技集团孵化中央Hacker
Dojo找到图片就同样势头之后,Pinterest于二〇一〇年七月正式达成线,仅仅指自己之心上人,他的网站成立四独月也只有发200名用户。不过在插手同一
个室内设计师论坛之后,一批好这家图片网站的设计师起首免费也Pinterest举办口碑营销,随后,Pinterest的流量最先盖每月40%到
50%之进度增长,并且增速维持至前些天。

风险投资人、网景联合开创者马克(马克(Mark))·安德森给2018年2月为Pinterest注资2700万新币。西尔伯曼同持有相同摆和非死不可开创者扎克(Zack)伯格类似之娃娃脸,在外的网站每个月向1200万用户提供图片服务之同时,他还还尚未呢协调寻找一个资讯发言人。

西尔伯曼代表尚没设想了盈利的问题,但是有些品牌就开于Pinterest下边下广告。

自然,所有的漫天还无可以拦截中国网站创业者天才的仿能力。近年来国内法最像的当是花瓣网。花瓣网创办人刘平阳并无甘于游说好是以模拟都发星星点点年历史的Pinterest,二零一八年十月创制的花瓣网也下了这种流行的“瀑布流”首页格局。

除此之外花瓣网之外,Pinterest在国内具有众多的借鉴者和模仿者,比如知美、Tmall哇哦和凡客达人、蘑菇街、漂亮说、点点网等个知名网站,豆瓣新首页也仿照了这种情势。

回过头来看,西尔伯曼似乎找到了社交网络与云存储时代的一个吓的机遇。因为带来富飞速发展,所以除了社交需求外,云存储服务一度改为新的样子热
点。金山软件先正好拆分云存储业务金山快盘,成立金山云集团,金山软件总经理张宏江亲自担纲金山云首席营业官。张宏江看,随着用户对个人数据的珍重程度进步,个人谈话存储面临变革的临界点,“个人对团结之音存储需求将进而关心。”

另外,果壳网今日头条、新浪相册等老商店也于悄然推出各项出口存储服务。互联网评论人刘兴亮表示,“社交与个人信息存储结合的Web2.0一时以变成互联网的产一个紧俏。”

  你可以从定义IIS,
将某一样近乎扩充名映射到指定的ISAPI应用程序,图一律示了IIS管理工具中之应用程序配置对话框。

  构建网址重写引擎

电子商务 3<RewriterConfig>
电子商务 4 <Rules>
电子商务 5 <!– Rules for Blog
Content Displayer –>
电子商务 6 <RewriterRule>
电子商务 7
<LookFor>~/(d{4})/(d{2})/(d{2}).aspx</LookFor>
电子商务 8
<SendTo>~/ShowBlogContent.aspx?year=$1&month=$2&day=$3</SendTo>
电子商务 9 </RewriterRule>
电子商务 10 <RewriterRule>
电子商务 11
<LookFor>~/(d{4})/(d{2})/Default.aspx</LookFor>
电子商务 12
<SendTo><![CDATA[~/ShowBlogContent.aspx?year=$1&month=$2]]></SendTo>
电子商务 13 </RewriterRule>
电子商务 14 <RewriterRule>
电子商务 15
<LookFor>~/(d{4})/Default.aspx</LookFor>
电子商务 16
<SendTo>~/ShowBlogContent.aspx?year=$1</SendTo>
电子商务 17 </RewriterRule>
电子商务 18 </Rules>
电子商务 19</RewriterConfig>

电子商务 20<skm:Form>

  从前文所构建的百般站点为条例,可以因此/info/employee.aspx?empID=EmployeeID来访问各国一个雇员的音信。为了要之网址更加地享有“隐蔽性”,我们可能会晤下更爱明白的访问形式使:/people/雇员名.aspx。这里虽起了一个网址重写的案例:当接过至对/people/司各脱(Scott)Mitchell.aspx的呼吁的时刻,我们不怕得用网址重写使得对拖欠页面的求让另行写指为到在此之前以的/info/employee?EmpID=1001地方。

电子商务 21<RewriterRule>
电子商务 22
<LookFor>~/Products/Default.aspx</LookFor>
电子商务 23
<SendTo>~ListCategories.aspx</SendTo>
电子商务 24</RewriterRule>

  以ASP.NET一流来实施网址重写,既可以运用HttpHandler,也可行使HttpModule。当使用HttpModule的时光,必须控制使该网址需要让重新写的说话,究竟该以全方位请求的生命周期期间的那么一个触及来以。乍一圈正在来几武断,不过是控制以第一而微妙之章程影响至您的应用程序。之所以作出对网址重写点之抉择是盖内嵌的ASP.NET
HttpModule使用Request对象的属性值来就好的劳作(回忆一下再一次写路径对Request对象的属性值的更改),那么些内嵌HttpModule以及对应事件之密切关连串举如下:

  本文研商了经类似HttpContext类的RewriteUrl()法来贯彻ASP.NET一流的网址重写,正如大家所盼那么,RewriteUrl()计在改是特有的HttpContextRequest的习性时为改了所请的公文以及路线。实际得到的功能即便是于用户访问该故的网址的下,他其实也是以服务器端请求另一个跟这多少个不同的网址。

  ·
允许擅自数量之HttpModule操控来的风波,这同IIS中之ISAPI过滤器类似;

  假定有同等众用户并不曾Windows级别之访权限访问C:\inetpub\wwwroot\info\employee.aspx,当这多少个用户准备访问/info/employee.aspx?EmpID=1001底早晚,他们会落不授权的不当,假设我们管网址重写放到AuthenticateRequest事件受到运作,当FileAuthorizationModule征该安全性设置的时段,他按无人为被求的文书是/people/司各脱(Scott)(Scott)Mitchell.aspx,而这时候该网址就被重新写了,因而FileAuthorizationModule相会一贯放行,让用户寓目了网址重写对的始末:/info/employee.aspx?Empid=1001。

  要由此一个HttpHandler来调用网址重写,可以先创立一个HttpHandlerFactory,它的GetHandler()计检查所求的网址并决定是否要调用网址重写。倘若如调用网址重写的语即便调用前文所陈述之既经过检查的HttpContext对象的RewritePath()方法。最后该HttpHandlerFactory再次回到一个由类System.Web.UI.PageParserGetCompiledInstance()方重回的HttpHandler。(那与内嵌于ASP.NET页面的HttpHandlerFactoryPageHandlerFactory)的劳作规律同。)

  其中type属性为HttpModule的标识号和类库名称,name性则也该模块取一个较协调的称号方便
在Global.asax调用。
HttpHandlerHttpHandlerFactory则是
在web.config文件中configuration\System.Web节中上加<httpHandler>标记,例如:

  以珍重一个Blog的时光,假使将这种有“隐蔽性”的网址提供于用户将会晤再也好。实际上很多Blog引擎都提供了这种网址重写的效益,现在来看望那一个是哪通过网址重写实现的。

  通过对拖欠基类的接续,所有需要举办的工作就是是成立一个继承自BaseModuleRewriter的类,重载Rewrite()措施并以拖欠法吃补充加网址重写逻辑代码。下文列出BaseModuleRewriter代码:

  通过那种艺术您得手动为各级一样年之Blog创造一个春的目并在该年下放置一个默认文件Default.aspx,而且还得在该夏目录下创立每一样月份之目,从01、02、…、12,每一个目下呢如防备一个默认文件Default.aspx。(记念后边的事例,为了将/Products/重写及/ListCategories.aspx也是假诺白手起家一个/Products/目录并放置一个默认Default.aspx文件。

**概要

  为了缓解这多少个神秘的题材,一个或许就是将网址重写在AuthorizeRequest事件被运作,不过于采取这种格局解决URL授权和表单授权的非常时还要引入了一个新的症结:文件授权会失效。当使用Windows验证的上,FileAuthorizationModule自我批评并证实就通过验证的用户是否拥有充足的权力访问特定的ASP.NET页面。

  例如,要奔指定的Web应用程序注册HttpModuleHttpHandler,只需要往该Web应程序的web.config配置文件被configuration\System.Web节中上加下列几进行:

  感谢继承那个强大的机能,使得我们大简短即得到了HtmlForm以此类下所有的功效定义,只待少量几尽代码就达到所需要目标,完整代码如下所示:

  注意:在注册HttpHandler的时候必须小心HttpHandler所下的文书扩张名必须就于IIS中开指向ASP.NET引擎的映射,在下面.scott扩张名的事例中,假如我们所利用的.scott扩充名而无于IIS中召开指向ASP.NET引擎的照的话,假定对foo.scott文件发出请求,该请求
将招致IIS将foo.scott文件内容平昔显示给客户端,为了能吃HttpHandler拍卖该要,必须以.scott扩展名在IIS中召开指向ASP.NET引擎的照,之后IIS才会科学地将.scott的请求转交给相应的HttpHandler
**实现网址重写

  创立一个蕴含类似这样网址的网站最后闹点儿种结果,首先由末了用户的角度来考察,http://yoursite.com/displayCategory.aspx?CategoryID=5
这些网址有些混乱, 可行性分析专家Jakob 尼尔(Neil)son(主页:
http://useit.com/)
提议采用网址显示模式时候考虑如下要求(参考网址:http://www.useit.com/alertbox/990321.html):

HttpModule 事件 简介
FormsAuthenticationModule AuthenticateRequest 判断用户是否已通过表单授权方式获取授权,如果没有的话则将用户重定向到指定的登录页面
FileAuthorizationModule AuthorizeRequest 当使用Windows授权方式的时候,该HttpModule判断并确定该Microsoft Windows帐户是否对其请求的资源拥有足够的权限
UrlAuthorizationModule AuthorizeRequest 检查并确认请求者是否对所访问的网址拥有权限。该Url授权可以在web.config文件的<authorization>和<location>元素中配置

  但是不幸之是欠Web
Form不会晤容许你指定action属性,也无碰面同意而通过设置有性质来达到禁用突显action属性的目标。得自行继承System.Web.HtmlControls.HtmlForm本条类似,同等看待载该类的RenderAttribute()道,明确指出该类不显示acton属性。

  使用网址重写引擎实现简单的网址重写

  ·通过应用正则表明式来而所制定的网址重写规则有所更为强大的重写能力;

  除了下边所陈述方法外,网址重写为得放入HttpHandler或者HttpHandlerFactory中调用。HttpHandler是一个负责对一定请求生成对应内容的切近,而HttpHandlerFactory**重返一个HTTP的实例,该实例针对一定请求生成对应内容。

  网址重写技术除了用于将复杂的网址简单化之外,它还会用于拍卖为网站目录调整要其余因导致发生大量之不行链接和过书签。

  本文所探究的用ASP.NET实现之网址重写技术就是是
基于ISAPI过滤器用于网址重写的技术内容,可是我们如故要探讨一下究竟是拔取ISAPI过滤器仍旧利用ASP.NET应用程序提供的技艺来落实网址重写技术。

电子商务 25<RewriterConfig>
电子商务 26 <Rules>
电子商务 27 <RewriterRule>
电子商务 28 <LookFor>pattern to look
for</LookFor>
电子商务 29 <SendTo>String to
replace pattern with </SendTo>
电子商务 30 </RewriterRule>
电子商务 31 <RewriterRule>
电子商务 32 <LookFor>pattern to look
for</LookFor>
电子商务 33 <SendTo>String to
replace pattern with </SendTo>
电子商务 34 </RewriterRule>
电子商务 35
电子商务 36
电子商务 37 </Rules>
电子商务 38</RewriterConfig>

电子商务 39
祈求五.呈现2003年10月7日底帖子

  以老版本ASP中,使用网址重写技术的路径很少,要么写一个
ISAPI过滤器,要么请第三在厂商提供的网址重写组件,但是在微软供的ASP.NET下您得透过多种术充裕粗略地出有好的网址重写软件,以满足自己各类不同的内需。本文将同而一头座谈就门针对ASP.NET开发人员的贯彻网址重写的技艺,然后推一些网址重写实际用的事例。在大家深入商讨网址重写技术之底细往日,大家先行看一下一般性以网址重写技术实现之场景。

  创立一个HttpModule异常简短,只要制造一个落实IHttpModule接口的类似,该IHttpModule接口定义了点儿独方法:

  · 是否好输入

  如上所述,
可以创设ISAPI过滤器并用于相应IIS引发的轩然大波,同理,ASP.NET也供了HttpModule电子商务,用以应ASP.NET引擎引发的波,一个ASP.NET应用程序
通过配备好具备多单HttpModule。ASP.NET引擎
每处理一个告,便起初化一个遥相呼应安排好之HttpModule,并允许她
针对请求处理期间吸引的轩然大波转对应的事件委托。事实上ASP.NET引擎
处理每一个要调用大量底波委托。FormsAuthenticationModule即是多多益善内嵌HttpModule遭到之一个,它
首先检查是不是使用表单授权,如果是吧,它
将检查用户是否曾授权,假使无授权则自动把用户重定向到指定的报到页面。(即:在asp.net中可以直接记录并判别用户登录授权的题材了!)

  网址重写不但可以于HttpModule蒙施行,也堪当HttpHandler遇运行。本文大家探索了在一个HttpModule倍受尽网址重写,也探究了转网址重写于ASP.NET中的一一不同场面的景。

  如上所述,网址重写是贯彻同种植截取网址请求并拿其开展拍卖后再也对到一个指定的网址的过程。
在网址重写尽之中间,相应处理程序处理为求的网址,从中提取出相关的价值,然后再度对一个初的指定地址。例如:由于同两次等网站目录调整,原有的
/people/
子目录下的备网页全体移动至/info/employees/目录,原访问者从收藏夹或者此外啥地方点击链接发出访问/people/目录下之公文之呼吁时,你必希望他或能通过原有地址看到跟原先平之页面,但骨子里来看的也是网址重写针对性的初目录下的照应文件。

  · 日称记录以及监视(Logging and Monitoring)

  使用HttpModule来调用网址重写

  2. 动HttpModule来执行网址重写

  成立一个数操作的ASP.NET程序太常见的饶是一个aspx页面后带及部分查询参数集合。例如在规划一个电子商务网站的上,假得你计划了同样宗效能允许用户浏览待售的货品,为了进一步有利操作,你计划了一个页面displayCategory.aspx将商品以给定的分类显示,那么该分类下之货色显示页面及应在页面文件对承诺网址后长了一个商品归类的询问参数,例如用户一旦查询待售的“装饰品”,在数据库中保有的饰物数据对应的归类编号CategoryID的价为5,那么用户会看如下网址:http://yoursite.com/displayCategory.aspx?CategoryID=5。

  然后用<Form runat=”server”>标签替换为

  结束语

  注:用上述简单的变动网址内容的不二法门来构思一下现行底可比盛行的Blog网站生成的网址。例如:要查询2004年10月28日所作之帖子,只待输入
http://someblog.com/2004/01/28 即可,如若将网址收缩为
http://someblog.com/2004/01 则呈现 2004年九月份底帖子
,同样以月份减弱掉拿到 http://someblog.com/2004
则呈现有2004年全年所发之帖子。

  注意:要采用网址重写引擎,强烈推荐在<LookFor>节中使用正则表明式。
**创立必须的目录结构

  记念在IIS中,一码请求最终给传送给一个ISAPI应用程序处理,该应用程序针对各个一样宗请求举行处理并回相应的多寡。例如,客户端有一个看经典ASP页面的请求,IIS将欠要转交给asp.dll程序处理,asp.dll针对拖欠要执行asp页面内容,并返HTML编码。ASP.NET也利用了仿佛之伎俩,ASP.NET引擎在以这个HttpModule伊始化后,判断连控制调用相应的HttpModule来处理该要。(问:怎么程序操作httpModule)

  我记挂还该于上述列表中重复添一长条:
是否便民回想。http://yoursite.com/displayCategory.aspx?CategoryID=5
这多少个地点没有一个地点符合Neilson标准的别一样久,也不便利记念。当然,对于暴发经历的网络支出专家的话,他们生熟练那种键值对成的询问参数结构连串,然则对于普通用户来说输入这一个富含参数的网址实在是极端费事了。

电子商务 40 <!–
电子商务 41<HttpModules>
电子商务 42 <add
type=”URLRewriter.ModuleRewriter,URLRewriter” name=”ModuleRewriter”/>
电子商务 43</HttpModules>
电子商务 44 –>
电子商务 45
电子商务 46 <!–
电子商务 47<httpHandlers>
电子商务 48 <add verb=”*”
path=”*.aspx” type=”URLRewriter.RewriterFactoryHandler,URLRewriter”
/>
电子商务 49</httpHandlers>
电子商务 50 –>

  并将截至标记</Form>替换为

  很显,这样创建目录结构的过程是死痛之。解决这种问题之一个主意就是安IIS将具有接收的请都传送给ASP.NET引擎来拍卖,这种方法,甚至并看那种位置/2004/04/,IIS都有目共睹地拿其传递给ASP.NET引擎处理,这种措施造成ASP.NET引擎得处理所有传入的求,包括css文件,图片文件、Javascript文件及Flash文件等等。

  为了重新好地示范网址重写引擎的周转,我们来起一个ASP.NET
Web应用程序来贯彻简单的网址重写引擎。假定我们为同一家在线销售各样商品之店堂服务,那个活分割为以下体系:

电子商务 51public abstract class
BaseModuleRewriter : IHttpModule
电子商务 52电子商务 53
电子商务 54 {
电子商务 55电子商务 56
public virtual void Init(HttpApplication app)
电子商务 57 {
电子商务 58 // WARNING! This does not
work with Windows authentication!
电子商务 59 // If you are using
Windows authentication,
电子商务 60 // change to
app.BeginRequest
电子商务 61 app.AuthorizeRequest +=
new EventHandler(this.BaseModuleRewriter_AuthorizeRequest);
电子商务 62 }
电子商务 63
电子商务 64电子商务 65
public virtual void Dispose()
电子商务 66 {}
电子商务 67
电子商务 68电子商务 69
protected virtual void BaseModuleRewriter_AuthorizeRequest(object
sender, EventArgs e) 电子商务 70 {
电子商务 71 HttpApplication app =
(HttpApplication) sender;
电子商务 72 Rewrite(app.Request.Path,
app);
电子商务 73 }
电子商务 74
电子商务 75 protected abstract void
Rewrite(string requestedPath, HttpApplication app);
电子商务 76}

  ·依照请求的不二法门决定所需要再写的途径;

  本节将考察于为这一个ASP.NET页面成立一个网址重写的HttpHandlerFactory。创建HttpHandlerFactory务必贯彻IHTTPHandlerFactory接口,它包括一个GetHandler()艺术。ASP.NET引擎在开首化那些HttpModule继做出决定针对该要调用相应的HttpHandler或者HttpHandlerFactory,在调用HttpHandlerFactory的时,针对该Web请求与随同的另音讯的HttpContext备受通过的的HttpHandlerFactoryGetHandler()措施将吃ASP.NET引擎调用,HttpHandlerFactory无法不回到一个能委托该要的靶子,并且该目的要能落实IHttpHandler接口。

  ·Init(HttpApplication),该法以HttpModule先导化时引发,通过该方法吗HttpApplication事件调用相应的风波委托;

  当然,在ASP.NET顶级的网址重写着,只有以IIS成功地拿请转交给ASP.NET引擎后才会得逞地实施,当用户请求一个恢宏名为.aspx的文书时就生当然地出。可是,假诺假定给用户输入一个实际并无有的网址,通过网址重写到任何一个是的aspx页面,你不可以不为该要成立相应的目及默认的Default.aspx页面,除非配置IIS让它把富有的求都传送给IIS处理,不过这种模式盲目地拿具有请求都传送给了ASP.NET引擎。

  为了有利于在Web应用程序中落实网址重写,我构建了一个网址重写引擎,该发动机提供下列功用:

  一种于好之计就是运同一栽相比较直观且易回忆之艺术来将网址表示为:
http://yoursite.com/products/Widgets
乍一关押这个容易就会晤想是网址所对应之情尽生或谋面是亮装饰品(Widgets)新闻,这几个网址就更换得更容易记念与扩散!然后我报自己的同事:“请查看这网址:http://yoursite.com/products/widgets
”不用我说第二整,她可能同样破就是把地方敲到浏览器上了(你吧足以当亚马逊(Amazon.com)的网站及这样尝试一下)。很快就浏览器上就排有了饰品(Widgets)的情节。这里“隐蔽性”表示:用户可以自动更改网址的末段,例如输入:http://yoursite.com/products
就会收看满分拣有关的货品列表或者列出所有相关商品分类目录列表。

  注意:由于web.config是XML格式的文档,所以当中和本域内务必避开直接运用部分特殊字符,如:&,<和>符号等。在第一久网址重写规则之<SendTo>节吃因故&amp来代表援引&符号,在亚长长的网址重写规则之<SendTo>节中之所以<![CDATA[…]]>元向来代表中具有的内容仍然文本域,不再要为此转义字符来代表援引。这有限种植艺术仍可以实现平等的目的。

  记念一下BeginRequest事件在AuthenticateRequest事件往日引发,而AuthenticateRequest事件同时在AuthorizeRequest事件前引发。

  · 是否将站点布局形象化

  · 是否简短

  那么啥时候在HttpModule调用网址重写合适也?他控制为所运用的表达措施,当然如果无以表达模式吧,那么不论是在BeginRequest事件、AuthenticateRequest事件或AuthorizeRequest事件备受调用网址重写没有多非常分别,假使利用表单验证办法而不利用Windows验证情势吧,把网址重写放入AuthorizeRequest事件委托中调用既可,就算下Windows验证形式吧,把这项效能放入BeginRequest事件或AuthenticateRequest事件调用就执行了。
**使用HttpHandler来调用网址重写

  注意:你会晤发觉<LookFor>节点受到避免直接当“Baverage.aspx”中使句点“.”是盖<LookFor>节点的价值是正则表明式的匹配格局,在正则表达式中句点符号是一个特殊字符,它象征万分任何一个字符,也就是说要访问BaverageQaspx时也会来匹配,为了避免来这多少个句点引起的非凡我们得在拖欠词点符号前边加上一个“\”,表示援引句点符号。

电子商务 77namespace ActionlessForm
电子商务 78电子商务 79
电子商务 80 {
电子商务 81 public class
Form:System.Web.UI.HtmlControls.HtmlForm
电子商务 82电子商务 83
电子商务 84 {
电子商务 85 protected override void
RenderAttributes(System.Web.UI.HtmlTextWriter writer)
电子商务 86电子商务 87
电子商务 88 {
电子商务 89
writer.WriteAttribute(“name”,this.Name);
电子商务 90
base.Attributes.Remove(“name”);
电子商务 91
电子商务 92
writer.WriteAttribute(“method”,this.Method);
电子商务 93
base.Attributes.Remove(“method”);
电子商务 94
电子商务 95
this.Attributes.Render(writer);
电子商务 96
base.Attributes.Remove(“action”);
电子商务 97 if (base.ID!=null)
电子商务 98电子商务 99
电子商务 100 {
电子商务 101
writer.WriteAttribute(“id”,this.ClientID);
电子商务 102 }
电子商务 103 }
电子商务 104 }
电子商务 105}

  · 权限控制及授权(Authentication and Authorization)

电子商务 106
祈求三.网址重写后底针对性商品归类的要
  和/Products/Baverage.aspx类似,下同样步我们抬高此外分类的重写规则,只待简地在web.config文件被<Rules>中于长任何<RewriteRule>节即可。该演示完整的重写规则集合请参考下载文档的web.config文件被的定义。

  ModuleRewriter继承自BaseModuleRewriter,并确含义地促成了网址重写的操作,该类仅含一个重载了底情势Rewrite(),其情节如下文所示:

  当一个Web请求传送至IIS会发生什么?

  ·重写路径,即便需要的话可以调用RewritePath方法;

  即使如重写的网址上含蓄有服务器端Web Form并尽多少回送,当该Web
Form回送数据时会暴透露真实的网址,也就是说,当用户访问/Products/Baverage.aspx时,浏览器上地址栏显示的啊是/Products/Baverage.aspx,可是事实上是访问/ListProdutsByCategoryID.aspx?CategoryID=1的内容,假诺ListProductsByCategoryID.aspx页面执行了数据回送的话语,用户给数据回送定向为原的/ListProductByCategoryID.aspx?CategoryID=1页面及,而不是/Products/Baverage.aspx页面。这则未是呀好题材,然而用户会发觉到点击一个按钮时网址暴发了底变动,这恐怕会教人不安,因为假诺由网址安全之角度来说,直接将真正的网址透透露了。
于是发生这种光景的来头是当Web
Form在见的常就是一目了然地设置其action属性为当下
Request目的中文件路径的值。当然,在Web
Form显示的时,从/Produts/Baverage.aspx到/ListProductsByCategoryID.aspx?CategoryID=1的网址重写就都尽完毕了,那意味
Request**对象所反映的凡目前用户所访问的地方是/ListProductsByCategoryID.aspx?CategoryID=1。这么看来,只需要给该服务器端表单在见的时不显现action属性即可缓解问题了。(对浏览器来说,如若无设置action属性的语句,那么以提交的上以动用其默认值。)

  为了实现ASP.NET中的网址重写,我们得成立一个HttpHandlerHttpModule用于:

  首先,我们要一个页面会分别按年、月、日分别展现Blog的始末。假定现在一度办好了一个页面文件ShowBlogContent.aspx,它能分别取年、月、日的查询参数,要查阅2004年十二月14日所作之帖子,大家好拜/ShowBlogContent.aspx?year=2004&month=2&day=14,要浏览2004年四月的数足以看/ShowBlogContent.aspx?year=2004&month=2,要询问2004年抱有数据可看/ShowBlogContent.aspx?year=2004。(在下载文件被提供ShowBlogContent.aspx源代码。)

  我们来研究一下以web.config中网址重写规则的配置节。首先要在web.config文件中指出是否要以HttpHandler或者HttpModule遭逢调用网址重写,在web.config中,下文已经包含了少于个都被诠释掉的配置节:

  在微软.NET Framework
1.0版本中,RewritePath()术接收一个新路线的简易字符串,在该里面HttpContext类的RewritePath(string)措施内在地换代Request对象的路和查询参数。除了RewritePath(string)办法之外,.NET
Framework
1.1本还提供了此外一些重载版本,其中一个重载版本接收三单输入字符串参数,这种交替的重载模式免仅仅只是设置Request目的的门路和查询参数这么些性,而是设置双重深层的成员变量,那一个成员变量用于为
PhysicalPathPathInfoFilePath特性总计Request对象值。

  时下正在流行Blog,很多个人数还存有一个祥和之Blog。不论你是不是对Blog感到陌生,他们在不断地翻新自己之Blog页面,那些页面就如一个个人日记本一样。大多数Bloger只是略地记下每一天发的事体,也爆发部分聚焦让有平大旨,比如影评、看球的观众协会、电脑技术等。

  内容简介

  显著这里发现了一个网址重写的案例。对于用户来说他们所输入的地址不富有其他实际意义并且不负有任何“隐蔽性”,倒不如使用网址重写引擎让用户失去拜访/Products/Baverage.aspx地址,系统将拖欠地方重写到ListProductsByCategoryID.aspx?CategoryID=1。我们可以于web.config文件中来成功网址重写任务:

  ·可以当web.config文件被也页面开发者定义其所运用的网址重写引擎的平整;

  很扎眼地来看,搜索用户访问的不二法门是否匹配/Products/Baverage.aspx,如若配合的言语,则拿网址重写到/ListProductsByCategoryID.aspx?CategoryID=1。

  要认识为啥那多少个额外的步骤是得的,先想起一下前文。网址重写引擎是处于ASP.NET一流的,也就是说,假若ASP.NET没有获取处理要的时机的话,网址重写引擎就非克对输入的网址请求作出判断。其余,IIS仅以乞请文件包含相应扩大名时才以呼吁转交给ASP.NET引擎。若是用户访问/Products/,IIS并不知道其扩大名是什么,于是它检查该目录下之公文看是不是含有有默认首页文件称(Default.aspx,Default.htm,Default.asp,等等,这么些文件称当IIS管理工具对话框中Web服务器性能对话框中之文档标签中定义。)当然,假诺/Products/目录不存在的话,IIS将回来一个HTTP
404误。

  关于对富有项目文件之处理的详实座谈一度高于了本书范围。有关以ASP.NET
Web应用程序中动用这一个技术的事例请访问.Text 这多少个开源之Blog。.Text
能够经安排将所有请求都传送给ASP.NET处理。它选择了一个自定义的HttpHandler来拍卖所有类型的文件类型,那些自定义的HttpHandler足辨别并判断哪些处理所有的文件类型。(图像文件、CSS文件等等。)

电子商务 107<RewriterConfig>
电子商务 108 <Rules>
电子商务 109 <! —- Rules for products
lister –>
电子商务 110 <RewriterRule>
电子商务 111
<LookFor>~/Products/Baverage.aspx</LookFor>
电子商务 112
<SendTo>~/ListProductsByCategoryID.aspx?CategoryID=1</SendTo>
电子商务 113 </RewriterRule>
电子商务 114 </Rules>
电子商务 115</RewriterConfig>

  本节只是探究通过HttpModule来促成网址重写,要理解哪些通过HttpHandler来贯彻网址重写请下充斥本文提供的代码。

  所有通过ASP.NET引擎解析的伸手最后于交付一个HttpHandler或者HttpHandlerFactory(一个HttpHandler只是简短地回到一个用以拍卖该要的HttpHandler的实例。)最终的信托呈现并应所求的HTML编码,并发送回IIS,IIS则以HTML重临给告客户端。
ASP.NET包含众多HttpHandler,例如,PageHandlerFactory大凡用以显示ASP.NET页面内容,WebServiceHandlerFactory用来显示ASP.NET
Web服务之SOAP数据包,TraceHandler用来将ASP.NET请求资源的HTML标记写副trace.axd。

电子商务 116
图二.IIS和ASP.NET对要的处理过程

  为了更加有利于地为网址重写创设HttpModule,从同先导自己不怕创设一个虚幻的基类(BaseModuleRewriter),该类实现了IHttpModule接口。在Init(HttpApplication)事件中,它通过BaseModuleRewriter_AuthorizeRequest方引发了HttpApplicationAuthorizeRequest事件,该BaseModuleRewriter_AuthorizeRequest术通过此类的Rewrite()方法重新写传入参数HttpApplication目的的里请求虚拟路径(Path)。在BaseModuleRewriter对象中,该Rewrite()情势是抽象的,并且没有实际内容,但于连续自该类的靶子中须重载Rewrite()方并为该形式供实际内容。

  图二描绘了一个对ASP.NET资源的请所通过的处理流程。首先,IIS接收至该要并将这传递给aspnet_isapi.dll。其次,ASP.NET引擎将有些HttpModule初始化。最后,最终的HttpHandler被调用,生成对应的记语言,并将该回到给IIS,最后回到要客户端。

  为了为该网址更有“隐蔽性”,假使被用户把/Products/Baverage.aspx前边Baverage.aspx一段子截去,在浏览器被输入/Products/来浏览产品分类列表会还好有的。乍一看押,那项任务微不足道,只待加加同久网址重写规则以/Products/映射到/ListCategories.aspx即可。可是这里暴发一个微妙之处在,你得事先创制一个/Products/目录,并以其中放一个空文件Default.aspx。

  回想上文,
ASP.NET对各级一个接到到的要派相应的HttpHandler来处理并显现相应内容,该派决定让所收取请求的verb和path的情节,verb也HTTP请求的色:GET或者POST,path则也请的公文之路和文件称。如果我们打算就此一个HttpHandler来拍卖所有GET类型和POST类型的而文件扩大名为.scott的情,可以当web.config相应配置节中在下列标记:

  实现网址重写的一个较安全的场地就是把它放在在BeginRequest事件中举行,这意味要如果执行网址重写的讲话,在过剩内嵌HttpModule运转的时他已经完结了。这种路径的结尾用途淋漓尽致地突显在表单验证上。当用户访问受限资源的时候,
假设从前使用了表单验证,他谋面自行为重定向到指定的报到页面,在中标登录后,用户为重定向回先前统计访问的被限制页面。

  其中 type是大家定义之HttpHandler的类型。

电子商务 117<httpHandlers>
电子商务 118 <add varb=”*”
path=”.scott” type=”type” />
电子商务 119</httpHandlers>

  创立真正“隐蔽”的网址

**  分析哪些以微软提供的ASP.NET来针对动态暴发的URL地址举办网址重写。
网址重写是兑现均等栽截取网址请求并以那进展处理后又对到一个点名的网址的长河。作者本人以针对各个实现网址重写的技能拓展探讨与探索后得出的阅历及道,希望可以对君抱有助。

  制造并登记由定义HttpModule和HttpHandler

  通过该规则定义,当用户访问/Products/Baverage.aspx文件的时刻,他们用张代售的饮品类商品列表信息。图3为访/Products/Baverage.aspx地址时之浏览器截图,注目的在于浏览器被地址栏上显得的是用户输入的/Products/Baverage.aspx地址,不过实际上访问的地址也是网址重写后的/ListProductsByCategoryID.aspx?CategoryID=1。(事实上,在服务器上从就是非在/Products/Baverage.aspx文件!)

  ·
是否拥有隐蔽性,也即便是叫用户通过一个虚构的接近产生意义之导航地址访问指为该地址

  假设发现一律长长的匹配,将故时规则的SendTo值对要的不二法门执行一个正则表明式替换,替换后底地方通过参数的款型传于RewriterUtils.RewriteUrl()方法,RewriterUtils凡一个援助类似,它提供有HttpModuleHttpHandler犹足以利用的静态方法,RewriterUrl()措施才是概括地调用了HttpContext对象的RewritePath()方法。

  在所有HttpModule深受开头化后,HttpHandlerFactory尽管起始让实例化。把网址重写在那一个事件场地的末段一个中调用的上,也会晤逢相同的题材:文件授权将碰面失灵。假使无即使因让Windows验证和文件表达的时节,你或许得动HttpModule来调用网址重写了。
下同样段我们观望于咋样构建一个但选拔的网址重写引擎,使用下文所取的这一个示例均为实案例作为参照,在作者主页上提供下载。先用用一个简练的网址重写的事例来探索怎么着兑现网址重写,紧接着用采纳网址重写引擎中恰恰则表达式的强劲处理能力来显示真“隐蔽”的网址重写技术!

  配置<LookFor>节要使用正则表达式来举办字符串匹配同替换。(在这我们选一个例子来表明咋样使用正则表达式来对字符串举办匹配同替换。)既然欠找格局是一个正则表达式,那么只要顾避让对正则表达式保留字符串的直接运用。(正则表明式的保留字符串包括有:.,?,^,$,等等,可以经此前方加上一个反斜线来引用这个保留字符,例如\.表示援引一个句点)

  被诠释掉的<HttpModules>为布局利用HttpModule调用网址重写;注释掉的<httpHandler>为布局使用HttpHandler调用网址重写。
管配置利用<HttpModules>如故<httpHandlers>调用网址重写,除此之外还须配备网址重写规则,一久还写规则包括个别宗字符串:请求URL中之寻形式和针对该形式的非凡成功后底替换字符串。该音信在web.config文件被之所以下列标签描述:

  上亦然省简单网址重写的示范显示了咋样通过新的网址重写规则来轻松地配置网址重写引擎,本节将经典型的正则表明式来显示网址重写的劲威力。

电子商务 120
贪图六. 显示2003年一月拥有的帖子
电子商务 121
祈求七. 彰显2003年具有的帖子

  关于对IIS如何管理所接收的伸手的详细探索有些高于本文内容,,紧要之是若领悟ASP.NET引擎只负责处理对扩张名已经于正确配置映射到aspnet_isapi.dll的纱要。 由此ISAPI过滤器来分析请求

  所以大家得创建一个/Products/目录并在该目录下额外创造一个拖欠文件Default.aspx,IIS会检查该目录下的文本,发现有一个默认文件名Default.aspx,于是以请求转交给ASP.NET,这样,网址重写引擎才会立竿见影。

  注意:你早已注意到了当行正则表明式匹配和替换的早晚调用了一个RewriterUtils.ResolveUrl()主意。该扶方法简单地更迭了应用程序路径中“~”的保有实例。

  例如:如若IIS接收到一个对Info.asp的呼吁,它会将该要转交给
asp.dll来拍卖,该ISAPI应用程序调出并履行所求的ASP页面,然后将变化的HTML代码再次来到给IIS,IIS最终将内容发送回请求客户端。对于ASP.NET页面,IIS则以请求转交给名也
aspnet_isapi.dll的ISAPI应用程序来拍卖,该ISAPI应用程序
调用托管的ASP.NET工作进程来拍卖该要,并以变的HTML代码重临给告客户端。

  ASP.NET问世在此之前,在IIS
Web服务器上的网址重写功效要经过ISAPI过滤器来兑现,自从这些家伙问世后我们便会透过ASP.NET来落实URL重写了,因为ASP.NET的解释引擎和IIS有巨大的相似之处,爆发那么些相似性重假如为
ASP.NET:

  你能够查看该文档相关下充斥着的ListProductsByCategoryID.aspx文件中之自定义Web
Form,该下载就提供了完全的Visual Studio.NET项目文件包。

  一旦HttpModuleHttpHandler深受创建后,必须于Web应用程序注册。假若要
向全Web服务器HttpModuleHttpHandler仅需要简的写副machine.config文件;假使是
由指定的Web应用程序调用则需在拖欠次的web.config配置文件被补充加几执行XML标记。

电子商务 122电子商务 123
<% 电子商务 124 @ Register TagPrefix =
” skm ” Namespace = ” ActionlessForm ” Assembly = ” ActionlessForm ”
%>

  · 于处理接收的求的生命期内哉相会发事件;

电子商务 125
**图一.已经配备的文件增添名映射

  Blog可以以其他地方由作者举办翻新,更新次数不过一律龙频繁,也足以是一致礼拜天两不良。在Blog页面及只突显目前10长长的立异,但实际上所有的Blog软件都提供了存档记录,访客可以阅读其历史记录。有矣“隐蔽”的网址,Blog应用程序将转移得越来越强劲。假定你通过/2004/02/14.aspx来询问自己的Blog上的篇章,你会晤也看到2004年十二月14日底Blog感到惊叹呢?其它你可能为看2004年十二月有的Blog而用该地址裁减为/2004/02/,要访问2004年拥有的Blog,你或许相会试试着去看/2004/。

  分类编号(CategoryID) 分类名(CategoryName)
   1          饮料(Beverages)
   2          调味品(Condiments)
   3          工艺品(Confections)
   4          日记本(Diary Products)
   … …
  
  假定已经建立好一个名为也ListProductsByCategoryID.aspx的ASP.NET页面文件,它通过查询参数获取一个分拣编号,并冲那个号码获取有拖欠分类下之享有商品。假设用户想浏览所销售的饮品类商品可以经ListProductsByCategoryID.aspx?CategoryID=1来拜会,假使用户想浏览所销售的日记本类商品可以通过ListProductsByCategoryID.aspx?CategoryID=4来做客。假定还有一个页面ListCategories.aspx,它列有具有代售商品的分类编号。

  对RenderAttributes()方重载的代码包含了原类HtmlFormRenderAttributes()术漫天底代码内容,只是简单地失去丢了设置action属性这同样省。

  下面图五、图六、图七都显示出网址重写的运行意况。这多少个数量还真实地挑选自笔者的Blog,图五突显2003年四月7日底帖子,图六亮所有2003年8月的帖子,图七突显2003年有帖子。

电子商务 126<HttpModules>
电子商务 127 <add type=”type”
name=”name” />
电子商务 128</HttpModules>

**  除了以呼吁的文本扩充名映射到相应的ISAPI应用程序外,IIS还举办有外工作。例如
IIS还积极对发出请求的客户端用户展开授权,并判已授权用户是否对其告的公文拥有访问权限,在一个请过程的整生命期内,IIS的拍卖涉了两只级次,在各种一个品级IIS都特别成一个波,而拖欠事件可以叫ISAPI过滤器实时操控的。

电子商务 129<httpHandlers>
电子商务 130 <add verb=”verb”
path=”path” type=”type” />
电子商务 131</HttpModules>

电子商务 132protected override void
Rewrite(string requestedPath, System.Web.HttpApplication app)
电子商务 133电子商务 134
电子商务 135 {
电子商务 136 // get the configuration
rules
电子商务 137 RewriterRuleCollection
rules = RewriterConfiguration.GetConfig().Rules;
电子商务 138 // iterate through each
rule电子商务 139
电子商务 140 for(int i = 0; i <
rules.Count; i++)
电子商务 141电子商务 142
电子商务 143 {
电子商务 144 // get the pattern to look
for, and
电子商务 145 // Resolve the Url
(convert ~ into the appropriate directory)
电子商务 146 string lookFor = “^” +
电子商务 147
RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath,
rules[i].LookFor) + “$”;
电子商务 148 // Create a regex (note
that IgnoreCase is set电子商务 149)
电子商务 150 Regex re = new
Regex(lookFor, RegexOptions.IgnoreCase);
电子商务 151 // See if a match is
found
电子商务 152 if
(re.IsMatch(requestedPath))
电子商务 153电子商务 154
电子商务 155 {
电子商务 156 // match found – do any
replacement needed
电子商务 157 string sendToUrl =
RewriterUtils.ResolveUrl(app.Context.Request.ApplicationPath,
re.Replace(requestedPath, rules[i].SendTo));
电子商务 158 // Rewrite the URL
电子商务 159
RewriterUtils.RewriteUrl(app.Context, sendToUrl);
电子商务 160 break; // exit the for
loop
电子商务 161 }
电子商务 162 }
电子商务 163}
电子商务 164
  该Rewriter()主意以得到web.config文件被的网址重写规则之装也发端,它经过巡回访问各国修网址重写规则,每趟均得到当前规则中之LookFor属性,用正则表明式验证并判断是否查找是否针对时恳请的网址是否生非凡。

  大家已探索了关键的有,可是还时有发生任何一些零件诸如将web.config文件被XML格式化了之网址重写规则反系列化至一个目的的类定义、通过HttpHandlerFactory心想事成网址重写的类定义等。本文最后三省用经有真实案例来探索网址重写的艺。

  · 网址重写(URL Rewriting)

  3. 所以网址重写引擎实现简单的网址重写

  于探索怎样兑现网址重写这项技艺从前,很有必不可少精晓一下IIS是拍卖所收到的Web请求的机制。
当一个Web请求到达IIS
Web服务器时不时,IIS会按照所要的文书后缀名来控制咋样处理该要,IIS可以处理诸如HTML页面、图片、静态内容,或者用呼吁转发让ISAPI应用程序,由该ISAPI应用程序处理后生成HTML静态内容重临给IIS,最后由于IIS将呼吁结果发送回给客户端。(一个ISAPI应用程序就是平等模拟编译好能时时当后台运行的类库,它的任务便是遵照请求生成相关的情节。)

  然后,当用户访问/2004/02/14.aspx时,大家得将他走访的网址重写及/ShowBlogContent.aspx?year=2004&month=2&day=14达到。这里需要制定三修网址重写规则:当指定访问年月日时常、当指定访问年月时和当指定访问年时。

  网址重写的一般用

  假如将网址重写在BeginRequest事件要AuthenticateRequest事件被,在签到页面上执行提交后,该页面会将用户重定向到网址重写指定的页面。假定当用户在浏览器上敲入/people/斯科特(Scott)Mitchell.aspx地址,该地址是若叫重定向到/info/employee.aspx?EmpID=1001的,
假如该Web应用程序设定使用表单验证,当用户起始访问/people/司各脱(Scott)Mitchell.aspx的时刻,该网址将重写指向/info/employee.aspx?EmpID=1001,接着ForumAuthenticationModule启航,固然需要的话将用户重定向到登录页面,用户登录后重定向到之页面将凡/info/employee.aspx?EmpID=1001,这也是由FormAuthenticationModule启航运作时所发生呼吁的页面。
跟齐接近,当把网址重写在BeginRequest事件或者AuthenticateRequest事件中运作的下,UrlAuthenticationModule为意识了网址重写对的网址,那意味要当该应用程序的web.config文件中<location>节为特定的网址配置特定的授权地址之说话,你得引用重写所对的网址。

  注意:该BaseModuleRewriter类似以网址重写在AuthorizeRequest事件受到调用,固然要动Windows验证并应用文件注脚形式时乞求修改代码用网址授权在BeginRequest或者AuthenticateRequest事件中。

  ·Dispose(),当相应请求处理终结并发送回IIS调用这多少个方法,通过这办法执行最终有的清理与回收程序。

**  当IIS接收到对/2004/03/19.aspx的要时,他意识文件扩展名.aspx,便以该要转交给ASP.NET引擎处理,在ASP.NET
引擎中传递时,该地点给重新写到/ShowBlogContent.aspx?year=2004&month=3&day=19,最终用户将张该Blog上2004年十月19日具有的帖子,然而以用户访问/2004/03/时会见来什么吗?除非已经在一个/2004/01/的目,否则IIS将再次来到一个404荒唐,而且该目录下还非得使来一个默认页面Default.aspx,IIS才可以以呼吁转交给ASP.NET引擎处理。

  1. 设置网址重写引擎的部署信息

  创制于定义HttpModule的办事相相比较简单,它包括一个兑现即接口的托管类,HttpModule无法不兑现System.Web.IHttpModule接口,同样HttpHandlerHttpHandlerFactory务必各自实现System.Web.IHttpHandler接口和System.Web.IhttpHandlerFactory接口。有关创设HttpHandlerHttpModule的底细就超越本书范围。

  稍微花点时间看同样关押而开的网站里的URL地址,你看看类似这样的地方也http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary
?也许你会出于某种目的把大量的页面文件由一个目甚至一个网站更换来另外地点,而多访问者出于个人兴趣或者探究目的往日便早已将旧网址收藏了起来,
如果这时他自收藏夹打开该页面的下发现这一度是坏链了。本文意在介绍如何运用网址重写将那么些“难看”的网址转换成为于有实际意义的网址,使其利回忆。例如将http://yoursite.com/info/dispEmployeeInfo.aspx?EmpID=459-099&type=summary转换成如下地址:http://yoursite.com/
dispEmployeeInfo/459-099/summary.html 。大家竟然发现
网址重写技术可以解决令人头疼的404不当,或者说她可创设一个智能化的404谬误解决方案。

  通过该规则,用户访问/Products/Default.aspx或者看/Products/都得以视而图四所著之制品分类列表。

  · HTTP内容收缩(HTTP Compression)

  每一样长长的规则都为此一个<RewriterRule>元素表示,以<LookFor>节表示查询情势,当查问格局发现匹配字符串时虽就此<SendTo>节表示的字符串举行替换。这些规则从上到下举行查询匹配,如若找到一个配合则按此规则执行网址重写,并且已查找。

  如同ISAPI应用程序一样,
ISAPI过滤器也是一块块安装在Web服务器上之非托管代码。
ISAPI应用程序用于对所收取的特定文件类型做出响应,而ISAPI过滤器涵盖指向IIS生成的风波做出响应的代码(contain
Code),甚至好编写进出的数据。ISAPI也含有众多应用程序,包括:

电子商务 165<skm:Form id=”Form1″
method=”post” runat=”Server”>

  注意:假如您打算展开网址重写的地址不履多少回送,则并未必要采用该于定义Web
Form的切近。

  和IIS一样,在一个呼吁的满生命期内,ASP.NET对该要的拍卖状态来之状态改变信号引发相应的事件。例如:BeginRequest事件在ASP.NET起始响应客户端请求的始引发;AuthenticateRequest事件在ASP.NET确立用户身份后引发,当然还有诸如AuthorizeRequestResolveRequestCacheEndRequest当其余众多事变,这些都是System.Web.HttpApplication仿佛下的波,更多信息请参考技术文档中之切近HttpApplication概要。

  这多少个网址重写规则展现了正则表明式的强劲威力。第一修规则以(\d{4})/(\d{2})/(\d{2})\.aspx情势展开查找,通俗的游说,它寻找是否包含匹配xxxx/xx/xx.aspx格式的字符串,其中x表示数字,每一样组数字要用圆括号括起来,这样可以对应<SendTo>节内引用圆括号内的匹配字符串。我们好应用$1、$2、$3来分别引用前匹配的圆括号组,其中$1,$2,$3各自代表所匹配的率先、第二、第三单圆括号组。

  当一个求传入ASP.NET引擎的时段会起什么?

  于ASP.NET中贯彻网址重写深粗略,
只待调用System.Web.HttpContext类的RewritePath()艺术即可。HttpContext仿佛中隐含有关于特定HTTP请求的HTTP规范音信。ASP.NET引擎每接收至一个一定请求后就对该要创立一个特定的实例,那个看似富含有特性诸如:
RequestResponse属性,分别提供针对性要和响应的拜会;ApplicationSession性提供对Application变量和Session变量的访;User性能提供对已授权用户信息之顾。

  ·可以因此简单布置即可在HttpModuleHttpHandler碰着利用网址重写。

  网址重写技术不仅可于IIS
Web服务器顶级通过ISAPI过滤器实现,而且还足以以ASP.NET顶级通过
HttpModule或者HttpHandler**实现。本文重要关心在ASP.NET超级实现网址重写技术,所以这时不用关注在ISAPI应用程序中贯彻网址重写的技术细节,而且发生成千上万叔正在厂商提供的ISAPI过滤器。

Leave a Comment.