小女巫 发表于 2015-1-16 22:28:31

ASP.NET网页编程之用.NET来完成URL重写

有时也搞不懂应该学那种;主要看你以后去的那个公司是使用哪种了。就像王千祥的课上说的:企业应用现在主要就三层(其实也差不多就是MVC):表示层(主要使用html写的,很简单)、业务逻辑层(主要就是应用服务器的)。最后就是数据层(其实就是学习数据库)要重写,起首是截获url哀求,然后剖析事先的url,最初跳转到响应的页面.以是我们第一步是要截获url哀求.
比来有个伴侣要做url重写的器材,我帮他弄了弄,转头看昔时本人写的谁人文章,事先觉得本人写的很简单了解.但如今再看却以为写的欠好.现在天百度了一下urlrewriter发明我这个文章居然排第二.为了便利更多伴侣,我再写点器材增补下.
一样平常用百度搜的伴侣都是对这个不懂得但又急必要用的,我想,再多的言语也比不外一句代码.因而我把明天帮伴侣时分写的一个小例子传了下去.这个小例子的目标是完成对恣意url的重写(但不包含二级域名的,有必要二级域名的也能够先懂得下url重写的观点).这个小项目标制造历程以下
必要对诸如http://song2.cn/viewnews/2009/3/2.html的url举行重写.将其重写为http://song2.cn/viewnews.aspx?id=2&year=2009&month=3
下载微软的谁人URLRewriter.dll,利用这个对url举行重写.
我们来看这个url,http://song2.cn/viewnews/2009/3/2.html(固然也多是3.html,6.html,7.html).要重写,起首是截获url哀求,然后剖析事先的url,最初跳转到响应的页面.以是我们第一步是要截获url哀求.为此新建一个类库叫URL,在该类库中援用URLRewriter.dll.新建一个类myrewritter.cs,代码以下
namespaceURL
{
publicclassmyrewritter:URLRewriter.BaseModuleRewriter
{
protectedoverridevoidRewrite(stringrequestedPath,HttpApplicationapp)
{
if(requestedPath.Contains("viewnews/2009/3/2.html"))
app.Context.RewritePath("/viewnews.aspx?id=2&year=2009&month=3");
else
app.Context.RewritePath("/here.aspx");
}
}
}
能够看到该类承继了URLRewriter.BaseModuleRewriter,然后在Rewrite办法中到场了我们本人的逻辑.如今,只需以后的url哀求是viewnews/2009/3/2.html,我们就会将页面重写到/viewnews.aspx?id=2&year=2009&month=3.
这只是一个复杂的例子,实践上关于url的判别,通常为用正则表达式来完成.而页面和页面间的对应干系,大概必要经由过程查询数据库完成.
接上去在网站项目中援用这个类库.然后修正下web.config,上面是我的web.config
<?xmlversion="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
<httpModules>
<addtype="URL.myrewritter"name="URL"/>
</httpModules>
<compilationdebug="true"/>
<authenticationmode="Windows"/>
</system.web>
</configuration>
人人能够看到我新加了个httpModules.这个的感化是,假如有url哀求,asp.net会先把哀求传到你指定的这个类中来.add那一行了,后面的是要吸收哀求的类,前面的是这个类地点的dll的名字.
增加完这一句后,统统就快停止了.因为我们要处置的是.html的页面,以是必要设置下iis.由于默许asp.net的处置引擎不会管.html.我们要做的是用途理asp.ent的谁人程序来处置html页面.翻开iis.找到你的网站,点右键翻开属性.找到主目次(HomeDirectory),翻开设置(Configuration)对话框.在Applicationextensions(抱愧我不晓得这个在中文体系里叫甚么)列内外找到.aspx,点击编纂(Edit...),复制Executable框的内容.好比我的是:C:WINDOWSMicrosoft.NETFrameworkv2.0.50727aspnet_isapi.dll.然后点击Add,在翻开的对话框里,Executable把方才复制的路径粘贴到这里,extension填写html,然后断定保留.如许我们就把对.html页面的哀求交给了asp.net.
全体完成了,编译下项目(中文情况叫天生),翻开urlhttp://localhost/mytest/viewnews/2009/3/2.html,看会不会重写到http://localhost//viewnews.aspx?id=2&year=2009&month=3
上面是我的例子的全体文件,人人能够下载然后看看.看一句代码比看十句话都管用,对吧
要注重的是,我的例子中,web网站的url设置成了http://localhost:8011,你大概必要变动下这个设置.办法是在网站项目上点右键,翻开属性.然后在Web页面中修正.
作为一个初学者,大概对这些器材感到挺烦的.假如你不想看长篇年夜论,那最好的举措就是看下我的代码.我比来在学flex,对有些新器材也是处于忍辱负重的形态.春季到了,人人都对照急躁,以是,静下心来,渐渐来.

刚刚打开这篇专题,猛然见到HAL9000发表的《对于大型公司项目平台选择j2ee的几层认识》系列,深受启发。

谁可相欹 发表于 2015-1-19 14:00:55

代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。

简单生活 发表于 2015-2-3 21:07:22

市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。

小魔女 发表于 2015-2-9 05:24:07

在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的

深爱那片海 发表于 2015-2-27 00:53:13

现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。

莫相离 发表于 2015-3-8 18:52:32

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。

小妖女 发表于 2015-3-16 11:55:29

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。

飘飘悠悠 发表于 2015-3-22 22:57:00

提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。
页: [1]
查看完整版本: ASP.NET网页编程之用.NET来完成URL重写