NET网页编程之怎样经由过程RewritePath办法重写Url地点完成伪静态
可怜的程序员,还是逃不出移植的命运!列位在扫瞄本站时假如仔细一些,就会发明本站的Url地点全都是目次式的,也就是像我的电脑中文件夹式的目次布局,地点中不包括文件名。之前在网上也看到有人问到这类目次式Url的完成办法,本站是经由过程重写Url地点来完成的,本章就说说小站的完成办法,固然,完成该功效的办法多种多样,不单单限于小站以下要说的办法。1,起首新建一个类库项目,将主动天生的Class1文件删失落,本人创立一个HttpModule.cs类。
2,修正代码,使HttpModule.cs类承继自IHttpModule接口,承继该接口必需完成
voidDispose();
voidInit(HttpApplicationcontext);
两个办法,Dispose办法我们可不必管它,我们仅必要在Init办法中完成HttpApplication的BeginRequest事务便可,代码以下:
publicvoidInit(HttpApplicationcontext)
{
context.BeginRequest+=newEventHandler(context_BeginRequest);
}
context_BeginRequest事务以下:
voidcontext_BeginRequest(objectsender,EventArgse)
{
HttpApplicationapplication=(HttpApplication)sender;
HttpContextcontext=application.Context;
stringpath=context.Request.Path;
//以上这句代码是完成客户端哀求的假造路径,如本站中的某链接的地点为http://www.lmwlove.com/ab/CatalogID1,那末当扫瞄器者点击该链接的时分,context.Request.Path的值就是http://www.lmwlove.com/ab/CatalogID1了。
猎取到该值后,就能够依据本人界说的划定规矩来举行Url重写了。好比本站中的ab代表tec/tec_article.aspx文件,那末就能够依据path中是不是包括ab来举行重写了。
以下代码:
if(path.Contains("ab"))
{
context.RewritePath("tec/tec_article.aspx")
}
}
全都代码以下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Web;
usingSystem.Text;
usingSystem.Text.RegularExpressions;
usingSystem.Collections;
namespaceMyHttpModule
{
publicclassUrlReWriter:IHttpModule
{
publicvoidInit(HttpApplicationcontext)
{
context.BeginRequest+=newEventHandler(context_BeginRequest);
}
voidcontext_BeginRequest(objectsender,EventArgse)
{
HttpApplicationapplication=(HttpApplication)sender;
HttpContextcontext=application.Context;
stringpath=context.Request.Path;
if(path.Contains("ab"))
{
context.RewritePath("tec/tec_article.aspx")
}
}
publicvoidDispose()
{
}
}
}
就是如许复杂,第二步就算完成了。
3,编译HttpModule.cs,将dll文件复制到网站的bin文件夹下。
4,配制web.config文件
在web.config文件的system.web节下配制
<httpModules>
<addname="UrlReWriter"type="MyHttpModule.UrlReWriter,MyHttpModule"/>
</httpModules>
个中type中的MyHttpModule.UrlReWriter为UrlReWriter.cs的定名空间,MyHttpModule为编译后dll文件名。
注:我在本机调试时是用以上配制,经由过程OK,但上传到租用空间后报错。将配制文件改成
<system.webServer>
<modules>
<addname="UrlReWriter"type="MyHttpModule.UrlReWriter,MyHttpModule"/>
</modules>
</system.webServer>
就OK了。
重写后会激发另外一个成绩,就是当页面回发时,页面会定向到原始地点,办理办法请拜见本站:RewritePath重写Url后回发会定向到原始地点的办理计划对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。
NET网页编程之怎样经由过程RewritePath办法重写Url地点完成伪静态
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。 主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
页:
[1]