不帅 发表于 2015-1-16 14:24:28

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标记,从而隐藏父类中同名的成员。

愤怒的大鸟 发表于 2015-1-16 21:12:05

NET网页编程之怎样经由过程RewritePath办法重写Url地点完成伪静态

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

因胸联盟 发表于 2015-1-27 21:48:39

ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。

仓酷云 发表于 2015-2-5 15:32:17

Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!

透明 发表于 2015-2-12 19:07:58

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。

兰色精灵 发表于 2015-3-3 07:49:09

HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.

第二个灵魂 发表于 2015-3-11 10:17:33

业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。

小女巫 发表于 2015-3-18 11:31:25

同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。

分手快乐 发表于 2015-3-26 00:01:50

主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
页: [1]
查看完整版本: NET网页编程之怎样经由过程RewritePath办法重写Url地点完成伪静态