url映射
url映射特性利用web.config中存储的配置信息把收到的请求重映射(remap)到不同的url。重映射发生在对请求的所有其它处理操作之前。下面的例子演示的是重映射一个页面请求,实际上任意文件类型都可以把请求重映射到不同的url。
定义重映射url
url映射的配置信息存储在web.config中。元素中嵌套的每个元素为重映射进入站点的(inbound)url定义了一条规则。url属性定义了进入站点的url的exact(原样)属性,url映射特性会试图用它进行匹配操作。如果exact匹配操作发生了,就会给进入站点的url重新写入mappedurl属性值。请注意,这个特性不支持更高级的规则(例如基于通配符和正则表达式的匹配)。
示例web.config为大量的url定义了映射规则。示例使用的web.sitemap文件定义的大量带有url值的节点都会被重映射。其结果是,url映射和站点导航的组合使用,使得开发者可以用友好的url来定义导航结构,并使用url映射把请求重新写到不同的页面来执行实际的处理过程。
当你运行示例的时候,请注意menu和treeview控件是如何根据web.sitemap文件中定义的站点结构来显示导航数据的。如果你把鼠标停留在treeview控件或右上角的sitemappath控件的链接上方,状态栏中显示的url是一个友好的url链接。当你点击任何导航链接的时候,实际运行的页面是default.aspx。但是,menu、treeview和sitemappath控件中的导航信息仍然反映为友好的url结构。
在页面的底部你还可以看到request.path、request.querystring["category"]和request.rawurl返回的值。request.path和request.querystring["category"]返回的值一直反映重映射进入站点的url的结果。但是,request.rawurl的值反映了重映射之前的友好的url。当站点导航特性试图把url信息与sitemap文件包含的数据进行匹配的时候,它会使用request.rawurl。如果匹配的值没有找到,xmlsitemapprovider就把request.path作为替代者。在例子中,所有的友好url在web.sitemap文件中都有条目,因此使用站点导航的控件一直根据友好的url来显示和引用节点。
以下是引用片段:
<?xml version="1.0" ?>
<configuration xmlns="http://schemas.microsoft.com/.netconfiguration/v2.0">
<system.web>
<urlmappings enabled="true">
<add url="~/category.aspx" mappedurl="~/default.aspx?category=default" />
<add url="~/autos.aspx" mappedurl="~/default.aspx?category=autos" />
<add url="~/games.aspx" mappedurl="~/default.aspx?category=games" />
<add url="~/health.aspx" mappedurl="~/default.aspx?category=health" />
<add url="~/news.aspx" mappedurl="~/default.aspx?category=news" />
</urlmappings>
</system.web>
</configuration>
新闻热点
疑难解答
图片精选