仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 862|回复: 8
打印 上一主题 下一主题

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

[复制链接]
不帅 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:24:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
可怜的程序员,还是逃不出移植的命运!列位在扫瞄本站时假如仔细一些,就会发明本站的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空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
透明 该用户已被删除
5#
发表于 2015-2-12 19:07:58 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
兰色精灵 该用户已被删除
6#
发表于 2015-3-3 07:49:09 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 10:17:33 | 只看该作者
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
小女巫 该用户已被删除
8#
发表于 2015-3-18 11:31:25 | 只看该作者
同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
分手快乐 该用户已被删除
9#
发表于 2015-3-26 00:01:50 | 只看该作者
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 12:39

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表