关于重映射URL的问题

问题描述

我写了一个asp.net中的Url重映射程序,但是不能映射到指定的页面,请大家帮我查找一下其中的错误如果输入类似http://localhost/重映射/Products/Soda时,想让它自动映射到http://localhost/重映射/Products/Default.aspx上,其中Soda是可动态改变的最后我把错误定位在这三个文件中,一个是配置文件UrlMappings.config,其内容如下:<?xmlversion="1.0"?><urlMappings><addurl="/Products/.*"mappedUrl="~/Products/Default.aspx"/></urlMappings>一个是web.config文件,内容如下:<?xmlversion="1.0"encoding="utf-8"?><configuration><appSettings/><connectionStrings><addname="Products"connectionString="DataSource=.SQLExpress;IntegratedSecurity=True;AttachDbFileName=|DataDirectory|ProductsDB.mdf;UserInstance=True"/></connectionStrings><system.web><httpModules><addname="UrlRemapper"type="AspNetHM.UrlRemapper"/></httpModules></system.web></configuration>另一个是定义的一个HttpModule模块类,其内容如下:namespaceAspNetHM{publicclassUrlRemapper:IHttpModule{publicUrlRemapper(){////TODO:在此处添加构造函数逻辑//}publicvoidInit(HttpApplicationapp){app.BeginRequest+=newEventHandler(app_BeginRequest);}publicvoidapp_BeginRequest(Objects,EventArgse){HttpApplicationapp=(HttpApplication)s;HttpContextcontext=app.Context;stringcurrentUrl=context.Request.AppRelativeCurrentExecutionFilePath;XmlDocumenturlMappings=GetUrlMappings(context);XmlNodeListnodes=urlMappings.SelectNodes("//add");foreach(XmlNodenodeinnodes){stringurl=node.Attributes["url"].Value;stringmappedUrl=node.Attributes["mappedUrl"].Value;if(Regex.Match(currentUrl,url,RegexOptions.IgnoreCase).Success){context.RewritePath(mappedUrl);}}}privateXmlDocumentGetUrlMappings(HttpContextcontext){XmlDocumenturlMappings=(XmlDocument)context.Cache["UrlMappings"];if(urlMappings==null){urlMappings=newXmlDocument();stringpath=context.Server.MapPath("~/UrlMappings.config");urlMappings.Load(path);CacheDependencyfileDepend=newCacheDependency(path);context.Cache.Insert("UrlMappings",urlMappings,fileDepend);}returnurlMappings;}#regionIHttpModule成员publicvoidDispose(){}#endregion}}结果是如果我输入类似http://localhost/重映射/Products/Soda.aspx时,它可以映射到http://localhost/重映射/Products/Default.aspx上,但是如果输入类似http://localhost/重映射/Products/Soda时,想让它自动映射到http://localhost/重映射/Products/Default.aspx上就不行了,显示无法找到页面,其中的Soda是可以动态改变的.请各位高手帮帮忙啊

解决方案

解决方案二:
以前遇到过类似的问题但是记不清楚了介意你的Soda加上后缀据说会被IIS转意为目录就找不到了
解决方案三:
必须要有扩展名否则请在虚拟目录下新建Soda文件夹,并写入一个空白的Default.aspx文件URL重写的前提是asp.net处理程序可以接受到来自IIS等服务器的解析请求而类似http://localhost/重映射/Products/Soda这样的地址IIS会自己在Sode目录下寻找默认文档如果找不到,直接返回404错误更本就不会再将aspx文件转交给asp.net去解析处理当然,你可以捕获http404错误,交由某一个aspx页面处理在从那个处理页面重写url到一个合法的地址

时间: 2024-10-04 23:37:55

关于重映射URL的问题的相关文章

什么是硬盘重映射和待映射?

在硬盘检测的时候有两个重要指标--重映射和待映射,这些东西经常被高手提起,但是你知道什么是重映射,什么是待映射么? 提起重映射还要先提起硬盘的坏道保护机制.硬盘生产收到工艺限制等因素刚刚生产出来的硬盘就会有一部分坏道.所以硬盘出厂的时候要经过老化测试,把坏的地方写入一个叫p表的东西里,这样硬盘在使用的时候就会跳过这些坏的地方了. 当然,使用过程中硬盘也会不断的被损耗,当有新的坏道出现时硬盘就会把这些地方写入一个叫g表的地方里,并调用相同大小的备份空间来顶替这个位置(逻辑上),每次当硬盘需要读写g

串口、以及引脚重映射实例

1 /*Include---------------------------*/ 2 #include"stm32f10x_lib.h" //包含所有的头文件 3 #include<stdio.h> 4 5 //----------------函数声明-------------------- 6 void Delay_MS(u16 dly); 7 void RCC_Configuration(void); 8 void GPIO_Configuration(void); 9

hi3531的pcie atu资源重映射

1. 设置ATU 区域号寄存器为需要配置的地址转换区编号. 2. 设置ATU Region Lower Base Address Register 和ATU Region Upper Base Address Register.(在此区域内的目标地址将由区域号寄存器所在的ATU 转换) 3. 设置ATU Region Limit Address Register. 4. 设置ATU Region Lower Target Address Register 和ATU Region Upper Ta

在ASP.NET 2.0中建立站点导航层次(5)

URL映射 URL映射特性利用web.config中存储的配置信息把收到的请求重映射(remap)到不同的URL.重映射发生在对请求的所有其它处理操作之前.下面的例子演示的是重映射一个页面请求,实际上任意文件类型都可以把请求重映射到不同的URL. 定义重映射URL URL映射的配置信息存储在web.config中.元素中嵌套的每个元素为重映射进入站点的(inbound)url定义了一条规则.url属性定义了进入站点的url的exact(原样)属性,URL映射特性会试图用它进行匹配操作.如果exa

技巧:在ASP.NET 2.0中建立站点导航层次

asp.net|导航|技巧|站点 站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息. 站点导航API--站点导航API用于在应用程序的代码中访问站点导航信息,它摘录了导航信息存储的细节.你可以使用API来编程访问应用程序的导航节点. 导航控件--导航控件为页面之间的导航提供了通用的UI,例

在ASP.NET 2.0中建立站点导航层次

asp.net|站点 站点导航提供程序--ASP.NET 2.0中的站点导航提供程序暴露了应用程序中的页面的导航信息,它允许你单独地定义站点的结构,而不用考虑页面的实际物理布局.默认的站点导航提供程序是基于XML的,但是你也可以通过编写自定义的提供程序,从任何后端位置暴露这些信息. 站点导航API--站点导航API用于在应用程序的代码中访问站点导航信息,它摘录了导航信息存储的细节.你可以使用API来编程访问应用程序的导航节点. 导航控件--导航控件为页面之间的导航提供了通用的UI,例如树视图.菜

asp.net 2.0中的url映射

asp.net 介绍 url映射是asp.net 2.0的一个新的特性,它可以让开发人员把一个页映射到另一个url上.如果一个url请求过来,程序会自动把它重新映射到服务端.例如,如果你在程序中配置了把~/Beverages.aspx映射到了~/ProductsByCategory.aspx?CategoryID=1&CategoryName=Beverages,那么当用户在浏览器中输入了http://YourSite.com/Beverages.aspx,服务器会接收后会自动的转到http:/

ASP.NET 2.0如何实现URL映射教程

asp.net|教程|url映射 URL映射是ASP.NET 2.0中提供的新特性.URL映射技术帮助我们将一个特定URL映射为另一个URL.为了帮助理解,我们假设你在站点有一个叫Homepage.aspx的页面来访问主页,所有的用户也都用这个页面来访问你的主页.但由于某些原因,你要将主页改为OriginalHome.aspx.此时使用URL映射让你可以映射到新页面,而不必通知用户. 如果我们设置了URL映射,那么任何用户在URL栏输入Homepage.aspx时,调用的都是OriginalHo

用好ASP.NET 2.0的URL映射

asp.net 简介: URL映射是ASP.NET 2.0中提供的新特性.URL映射技术帮助我们将一个特定URL映射为另一个URL.为了帮助理解,我们假设你在站点有一个叫Homepage.aspx的页面来访问主页,所有的用户也都用这个页面来访问你的主页.但由于某些原因,你要将主页改为OriginalHome.aspx.此时使用URL映射让你可以映射到新页面,而不必通知用户. 如果我们设置了URL映射,那么任何用户在URL栏输入Homepage.aspx时,调用的都是OriginalHome.as