在ASP。NET 2。0 中的URL映射(URL Mapping)

翻译 2006年05月23日 14:46:00

ASPNET 20 中的URL映射(URL Mapping)

在理想的情况下,我们第一次设计完美的设计好程序了。页面将会在适当的文件夹里被创建并且呆在那里。用户将不会去在意我们程序中的页面的URL。所以我们可以把页面放在任何想放的地方,而不用去担心页面的URL问题。

在实际情况中,事情没有这么简单。你也许会在你发布程序之后,发现你要去认真的决定你的文档架构。作为解决办法之一,用户可能会愿意看到这样的URL

http://www.example.com/widget.aspx

而不是

 

http://www.example.com/Products/W/widget.aspx

当你发布程序之后做这样的改变,可能是最单调无味的,花费时间去重写代码。

 

幸运的是,ASP.NET 2.0 推荐了一种新的工具去解:URL mapping。在这里,我将展示如何在一个Asp.net站点使用URL mapping。我还将展示这种技术的局限性与这些局限性的解决办法。

URL Mapping in Action

动态中的URL 映射(Mapping

让我们用Widgets页面作为例子。

1展示了一个非常简单的ASP.NET 2.0 应用程序

默认的,Widget.aspx页面将可以用~/Products/W/Widget.aspx(在这里的第一个字符~代表了网站根目录的路径)问的。在ASPNET 2.0中的新特性就是你可以通过程序中的 web.config 文件来改变你的路径。为了做到这个程序,你需要在<system.web>中添加一个<urlMappings> 部分。这里有你做MAPPING过程中想要的代码。

<system.web>

    <urlMappings enabled="true">

        <add url="~/Widget/aspx" mappedUrl="~/Products/W/Widgets.aspx"/>

    </arlMappings>

</system.web>

 

 

<system.web>

    <urlMappings enabled="true">

        <add url="~/Widget/aspx" mappedUrl="~/Products/W/Widgets.aspx"/>

    </arlMappings>

</system.web>

<urlMappings>部分,你可以有很多的<add>部分,每个这样的部分都有一个URL属性,这个属性指定了用户将要输入的URL,还有一个mappedUrl的属性,这个属性指定了实际的URL。这个实际的URL是代替用户输入URL的,是应用程序要传递的,

2展示了在这样的情况下用户输入指定的URL的结果。

注意通过asp.net 的事件已经传递了映射的URL,那个用户输入的URL仍然显示在浏览器的地址栏上。

The Limits of URL Mapping

 

URL映射的局限性

URL映射的主要局限,就像运行在ASP.NET 2.0 中一样,是一个纯粹的静态技术,不带任何的通配符。你可以包含一个查询在URL(例如,有可能映射~/Products/Widget.aspx ~/Products.aspx?ProductID=widget)。可是你不能设置一个映射,然后用正则表示式去改变相所有的相似URLs 到相似的映射的URLs。对于许多应用程序来说,这是很严格的,绝大多数的决定性的局限相当地削弱了URL映射的效用。

为什么会有这样的局限? 微软的Scott Guthrie在他的博客中解释,公司计划在IIS 7.0中提供全面的URL重写的特性。IIS 7.0 将预定做为Longhorn Server (操作系统)的一部分装载。随着未来几年内的Longhorn Server的完成,微软不会为了这个系统的发布,而让ASP.NET 2.0 的队伍去解决可测量性跟安全性方面的问题。

灵活的URL 重写

幸运的是,你不用因为得到更多的灵活的URL重写而去等Longhorn Server的发布。今天,这里有几种的解决方安可以帮助你如果你需用正则表达式去做ASP.NET 2.0 URL重写。

为了那些初学者,很多ASP.NET的开发人员已经完成了他们自己的,针对带着RegEx 支持的URL 重写的HTTP模块。我已经看了其中的一个,它对于的ASP.NET 2.0的其它特性(像 THEMES)的大部分支持可以在Albert Weinert and Thomas BandtUrlRewritingNet namespace中找到。这个开源的部件仍然要在web.config文件的规则去配置,但现在,这个规则可以使用正则表达式去匹配或者替代。例如,这儿有几个有正在使用这个构件的有效规则

 

<rewrites>

    <add virtualUrl="^~/(.*)/(.*).aspx"

      rewriteUrlParameter="StoreInContextItems"

      destinationUrl="~/$2.aspx?language=$1&parameter=$2"

      ignoreCase="true" />

</rewrites>

这个规则将映射一个URL  ~/English/Add.aspx到一个~/Add.aspx?language=English&meter=add

要拥有更多的灵活性,你可以去看看商业ISAPI_rewrite URL 处理机制。 HTTP模式的解决方安的问题之一就是只对ASPX文件有效(或者其他的一些可以传递给ASP.NET机制的文件)。因为它是作为一个ISAPI的过滤器。 ISAPI_rewrite可以任何发给IISURL。这个可以允许你去应用基于正则表达式的重写技术到任何的文件类型,例如,如果你需要带着查询参数重定位图像文件或者映射 .html URL .aspx页面,这个工具可以做这样的工作。ISAPI_rewrite 有测试版跟商业版($69,可以解决大多熟运行在单个服务器上的网站所遇到的问题。

一个值得知道的技术

URL rewriting 是一个很有用的工具,你最好把它想成一个可以使你网站从给网站用户的逻辑表达到你网站的物理布局简单化。有了WURL rewriting技术,你可以像你的用户提交一个友好的,简短的URLs到浏览器。 可以在你的源代码树中仍然使用很长,详细的,有组织的URLS

你可以用Microsoft的原来自带的ASP.NET 2.0 URL解决方法,或者你需要更灵活的,已经在本文中指出的,经过评估的那些软件,这取决于你对URL rewriting的需要的复杂度。你将觉得这些软件对你很有帮助。

 

servlet-mapping之url-pattern详解

servlet-mapping是用于servlet的路径映射配置,其中url-pattern为指定的映射拦截路径。 在SpringMVC中,url-pattern指定了spring需要拦截派发的路径。...
  • mafan121
  • mafan121
  • 2015年04月14日 01:03
  • 9700

ASP.NET实现URL映射的方法

URL映射是ASP.NET 2.0中提供的新特性。URL映射技术帮助我们将一个特定URL映射为另一个URL。为了帮助理解,我们假设你在站点有一个叫Homepage.aspx的页面来访问主页,所有的用户...
  • hoiven
  • hoiven
  • 2016年05月10日 17:16
  • 1026

asp.net 4.0 在webconfig 设置 url映射

设置映射的路径  配置 全部...
  • lzy_1515
  • lzy_1515
  • 2011年11月28日 10:08
  • 4850

妙用ASP2.0中的URL映射改变网址

 URL映射有什么用呢?     举个比较实用的例子,比如你开发一个Blog网站, 每个Blog主页的加载地址是     www.blog.com/Default.aspx?id=anckly    ...
  • cuoguo1111
  • cuoguo1111
  • 2007年02月27日 17:55
  • 499

ASP.NET URL重定向技术

别看题目挺深奥,其实这项技术说白了就是:用虚拟路径代替URL参数来执行aspx页。URL参数大家都应该明白怎么回事吧,比如http://spaces.msn.com/blog.aspx?name=dc...
  • dcsoft
  • dcsoft
  • 2006年08月21日 21:14
  • 3910

利用urlMappings重写URL路径

urlMappings 元素(ASP.NET 设置架构).Net2.0新增属性 定义一个映射,该映射隐藏实际的 URL 并将其映射到用户更容易记忆的 URL。configuration 元素(常规设置...
  • cui55
  • cui55
  • 2007年08月29日 15:31
  • 3130

urlMappings与URL映射

此配置节的作用就是往Web程序中添加URL的映射,从而达到用户访问映射后的URL(如/Page/AAA)也能访问到源URL(如/Page/PageAAA.aspx)的效果。这也是URL映射本来的作用。...
  • hzbje7XSXP
  • hzbje7XSXP
  • 2017年03月02日 23:20
  • 280

关于asp.net三种重定向方法的总结

转自:http://blog.csdn.net/ldneedu/article/details/5796579 asp.net三种重定向方法的总结 (1)Server.Tran...
  • jane007123
  • jane007123
  • 2016年02月12日 16:21
  • 2315

springMVC之No mapping found for HTTP request with URI 问题

使用Spring MVC拦截所有请求时,如果设置如下: springMVC org.springframework.web.servlet.DispatcherServlet ...
  • wang704987562
  • wang704987562
  • 2017年03月28日 15:40
  • 112

asp.net 获取当前地址栏中完整的url

当url中没有带参数时可以使用:HttpContext.Current.Request.Url.ToString() //例如:http://www.xxx.com/aaa.aspx当url中带参数时...
  • lee576
  • lee576
  • 2007年12月30日 22:06
  • 3481
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在ASP。NET 2。0 中的URL映射(URL Mapping)
举报原因:
原因补充:

(最多只允许输入30个字)