




免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
URL 重写是截取传入 Web 请求并自动将请求重定向到其他 URL 的过程。比如浏览器发来请求hostname/101.aspx ,服务器自动将这个请求中定向为http:/hostname/list.aspx?id=101。url重写的优点在于:缩短url,隐藏实际路径提高安全性易于用户记忆和键入。 易于被搜索引擎收录二 实现url重写的基本方法下载MS的URLRewriter.dll,放到你的web程序的bin下下载地址1:/uploads/DevTools/MSDNURLRewriting.msi下载地址2:/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi下载完成后,在web.config里设置如下:/d(d+).aspx/default.aspx?id=$1其中用于指定配置节RewriterConfig的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter .dll文件中关键的是这两句/d(d+).aspx/default.aspx?id=$1/d(d+).aspx表示,用户输入的url,d(d+).aspx是 url中文件名匹配的正则表达式(此处为字母d开头,后面跟一个或多个数字,并以.aspx结尾。用户也可根据自己的需要自行设定)。 /default.aspx?id=$1,表示当服务器接收到符合上面条件的请求后如何重写url。此处表示访问 defalutl.aspx并传入参数id,其值$1将用用户请求的文件名中的第一个数字来表示。例如用户输入 hostname/d11.aspx,服务器会把他重写为http:/hostname/default.aspx?id=11。换句话说用户输入 http: /hostname/d11.aspx,实际访问的是http:/hostname/default.aspx?id=11。这样就起到了隐藏真实文件名,并便于用户记忆的作用。处理回发在重写后的url里如果产生回发,例如有一个按钮,又调用了该被重写的 aspx,用户浏览器中将会显示该aspx文件实际的地址,也就是http: /hostname/default.aspx?id=11。但从用户的角度考虑,如 果单击按钮时突然看到 URL 更改会使他们感到不安。因此必须解决这个问题。解决方法有二:(1)自己定义一个Actionlessform类,在aspx中不再使用系统提供的form 标记namespace ActionlessForm public class Form : System.Web.UI.HtmlControls.HtmlFormprotected override void RenderAttributes(HtmlTextWriter writer)writer.WriteAttribute(name, this.Name);base.Attributes.Remove(name);writer.WriteAttribute(method, this.Method);base.Attributes.Remove(method);this.Attributes.Render(writer);base.Attributes.Remove(action);if (base.ID != null)writer.WriteAttribute(id, base.ClientID);创建此类并对其进行编译之后,要在 ASP.NET Web 应用程序中使用它,应首先将其添加到 Web 应用程序的 References 文件夹中。然后,要使用它来代替 HtmlForm 类,做法是在 ASP.NET 网页的顶部添加以下内容:然后,将 (如果有)替换为: 并将右边的 标记替换为:个人并不推荐该方法(2)第二种方法就是继承page,这样你不需要在aspx页中改任何东西。代码:using System;using System.IO;using System.Web;using System.Web.UI;namespace URLpublic class OLPage : Pagepublic OLPage()protected override void Render(HtmlTextWriter writer)if (writer is System.Web.UI.Html32TextWriter)writer = new FormFixerHtml32TextWriter(writer.InnerWriter);elsewriter = new FormFixerHtmlTextWriter(writer.InnerWriter);base.Render(writer);internal class FormFixerHtml32TextWriter : System.Web.UI.Html32TextWriterprivate string _url; / 假的URLinternal FormFixerHtml32TextWriter(TextWriter writer):base(writer)_url = HttpContext.Current.Request.RawUrl;public override void WriteAttribute(string name, string value, bool encode)if (_url != null & string.Compare(name, action, true) = 0)value = _url;base.WriteAttribute(name, value, encode);internal class FormFixerHtmlTextWriter : System.Web.UI.HtmlTextWriterprivate string _url;internal FormFixerHtmlTextWriter(TextWriter writer):base(writer)_url = HttpContext.Current.Request.RawUrl;public override void WriteAttribute(string name, string value, bool encode)if (_url != null & string.Compare(name, action, true) = 0)value = _url;base.WriteAttribute(name, value, encode);把这个文件编译成dll,并在你的项目中引用它。然后把项目中的所有aspx文件对应的cs文件中的继承page类的代码改写为继承OLPage。例如public class WebForm1:page改写为public class WebForm1:URL.OLPage这样就解决回发问题。编译*.dll方法:/t:library name.cs利用Mircosoft URLRewriter.dll实现页面伪静态 一,获得Mircosoft URLRewriter.dll:获得Mircosoft URLRewriter.dll可以到/china/msdn/library/webservices//URLRewriting.mspx?mfr=true这里,选择onclick=javascript:Track(ctl00_rs1_mainContentContainer_ctl00|ctl00_rs1_mainContentContainer_ctl01,this); href=/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi下载本文的源代码,下载完毕后,导入工程,我这里没有对该工程做任何修改,保留了原来的重写方式,然后直接在VS2005里面生成.dll文件就可以了。二,使用该dll文件:添加引用,搞定。三,页面方面的设计,这里不在赘述了,我会放一个下载包,有兴趣的朋友下载来看看吧,代码写的比较乱。四,web.config的配置这部是非常关键的,也是静态化能否成功的关键。/web/new/type/(.0-9*).html/web/new.aspx?id=1/web/index.html/web/index.aspx这里简单介绍一下:要查找的模式要用来替换模式的字符串要查找的模式要用来替换模式的字符串httpHandlers的设置主要是配合IIS将请求重新定义处理,这里也比较关键,如果不存在合理的httpHandlers,那么,访问
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学校安全培训给学生
- 住培岗前培训
- 肿瘤患者疗后监测体系构建
- 子宫内膜息肉超声诊断与应用
- 【MOOC答案】《人工智能基础》(国防科技大学)章节作业慕课答案
- 肿瘤病人化疗后便秘护理
- 教培招生培训
- 主题教育动员部署会
- 外科护理工作讲解
- 2025年虚拟现实在地理信息系统教育中的应用技术成果鉴定报告
- 《民用无人驾驶航空器系统分类及分级》考试题库(含答案)
- 国际化竞争格局下的动漫游戏行业发展策略
- GB/T 44087-2024北斗三号区域短报文通信用户终端技术要求与测试方法
- GB/T 43868-2024电化学储能电站启动验收规程
- 中医药健康管理服务流程
- 资本论在中国智慧树知到期末考试答案2024年
- 国家职业技术技能标准 6-16-02-06 油气水井测试工 人社厅发202226号
- 继电保护配置及整定计算
- 初高中物理衔接课件
- 血管导管相关血流感染预防与控制
- 第四次教育革命:人工智能如何改变教育
评论
0/150
提交评论