在项目中经常要进行如下映射
将
http://onewww。net/a。aspx?name=llinzzi
映射到
http://onewww。net/llinzzi
首先要解决2个问题
第一是支持通配符的映射URL映射是asp。
net2。0新增的功能,不支持通配符
于是采用了NBEAR的NBear。Web。Modules。UrlRewriteRules进行通配符映射
<xmlversion=”1。0″?>
<–
注意:除了手动编辑此文件以外,您还可以使用
Web管理工具来配置应用程序的设置。
可以使用VisualStudio中的
“网站”->“Asp。Net配置”选项。
设置和注释的完整列表在
machine。config。comments中,该文件通常位于
\Windows\Microsoft。
Net\Framework\v2。x\Config中
–>
<configurationxmlns=”http://schemas。microsoft。com/。NetConfiguration/v2。
0″>
<configSections>
<sectionname=”UrlRewriteRules”type=”NBear。Web。Modules。UrlRewriteRules,NBear。
Web”/>
</configSections>
<UrlRewriteRules>
<Rulekey=”/(。*)/”value=”/a。aspx?name=$1″/>
<Rulekey=”/(。
*)”value=”/a。aspx?name=$1″/>
</UrlRewriteRules>
<appSettings/>
<system。web>
<sessionStatetimeout=”200″/>
<httpModules>
<addtype=”NBear。
Web。Modules。UrlRewriteModule,NBear。Web”name=”UrlRewriteModule”/>
</httpModules>
<–
设置compilationdebug=”true”将调试符号插入
已编译的页面中。
但由于这会
影响性能,因此只在开发过程中将此值
设置为true。
–>
<compilationdebug=”true”defaultLanguage=”c#”/>
<–
通过<authentication>节可以配置ASP。
NET使用的
安全身份验证模式。
以标识传入的用户。
–>
<authenticationmode=”Windows”/>
<–
如果在执行请求的过程中出现未处理的错误。
则通过<customErrors>节可以配置相应的处理步骤。具体说来。
开发人员通过该节可以配置
要显示的html错误页
以代替错误堆栈跟踪。
<customErrorsmode=”RemoteOnly”defaultRedirect=”GenericErrorPage。
htm”>
<errorstatusCode=”403″redirect=”NoAccess。htm”/>
<errorstatusCode=”404″redirect=”FileNotFound。
htm”/>
</customErrors>
–>
</system。web>
</configuration>
vs2005里进行测试成功,但放到IIS里失败
检查了几次,没发现问题,仔细想了想
先了下,iis的工作流程应该是遇到。
aspx扩展名,交给。net处理,然后才能调用httpModules进行url映射
http://onewww。net/llinzzi
没有aspx扩展名,所以iis直接当成文件架,返回404错误了
而vs2005里的调试web服务器把所有的请求都发给了。
net处理,所以成功。
于是更改映为
<Rulekey=”/(。*)/index。aspx”value=”/a。aspx?name=$1″/>
浏览
http://onewww。
net/llinzzi/index。aspx
测试成功。
开心,把index。aspx设置成默认文档
测试http://onewww。net/llinzzi/结果还是404错误
想了下iis认为llinzzi文件夹不存在,自然就没用默认文档去访问
郁闷,想了很多方法,均失败
难道要用llinzzi/index。
html访问?难道要生成真是存在的文件夹?
都不是理想的方案
在尝试从iis里的主目录里的配置里修改isapi来实现用文件夹对iis的解析的时候,突然发现windows2003服务器上的iis6对比我工作机xp上的iis5多了一个名为
通配符应用程序映射的设置,眼睛一亮。
有戏,第一名字听起来有门,第二2003本来就是为。net打造的。于是点插入,
输入c:\windows\microsoft。net\framework\v2。0。50727\aspnet_isapi。dll
测试,成功!
搜索了下关于通配符应用程序映射的资料
安装通配符应用程序映射
在IIS6。
0中,管理员可以在每次开始对网站或虚拟目录发送请求时,将该网站或虚拟目录配置为运行Internet服务器API(ISAPI),而不管所请求文件的扩展名。
当IISWeb服务器接受到来自客户端的请求时,Web服务器会查看在请求中命名的文件扩展名,以确定有哪一个ISAPI或公共网关接口(CGI)应用程序来处理该文件。
例如,如果请求名为Default。asp的网页时,IIS可以从应用程序映射列表中知道Default。asp由Asp。dllISAPI应用程序处理。
如果想在所请求的页面发送到映射的应用程序前对每次客户端请求执行特定的任务,可以编写一个ISAPI筛选器在请求到达时将其截获。
但是,ISAPI筛选器具有以下限制:
它们不能访问请求主体,而只访问头。
它们只能在每个站点配置,而不能在每个虚拟目录配置。
它们不应包含长期运行的操作,因为ISAPI筛选器是同步进行的。
它们的灵活性较小,因为ISAPI筛选器API的功能比ISAPI扩展API少,后者用于编写ISAPI应用程序。
它们在时间上难以管理。
它们是事件驱动的。
通过使用通配符应用程序映射,您可以在所请求的页面发送到其映射应用程序之前截获每个请求。
其效果就像拥有处理每个文件名扩展的应用程序映射。这就是使用“通配符”来命名这一功能的原因。使用通配符应用程序映射的应用程序只能是ISAPI应用程序。
客户端请求采用以下路由:
传入的请求由安装在根网站上的任何现有的ISAPI筛选器处理。
ISAPI筛选器依次执行。
请求被发送到任何现有的通配符应用程序映射的应用程序,这些程序也是依次执行的。如果传入的请求是对虚拟目录中的Web文件进行请求的,且通配符应用程序映射已安装在了该虚拟目录和根网站上,那么只有安装在该虚拟目录的通配符应用程序映射才被执行。
如果该虚拟目录上没有安装通配符应用程序映射,则将执行安装在网站上的通配符应用程序映射。换句话说,通配符应用程序映射只在所请求的Web文件所处的应用程序中不存在映射时才会被继承。
IIS服务器会查看应用程序映射表,以确定由哪个ISAPI应用程序或CGI脚本专门处理所请求的文件。
每个阶段都可以附加响应,然后传回给客户端。
使用通配符应用程序映射
通配符应用程序映射可以在以下方案中使用:
高安全性Web应用程序(如银行业应用程序)要求对每个提出请求的用户根据用户名、密码和帐户号数据库进行身份验证。
例如,一旦用户通过了身份验证,将会创建规定用户可以访问哪些信息的特定规则。如果通配符应用程序映射确定用户不具有相应权利,它可以阻止请求的进一步访问,或将请求发送到所请求的网页以外的网页。这种自定义的身份验证和授权方案可以在ISAPI应用程序中执行,并安装为通配符应用程序映射。
这样,所有用户必须通过身份验证,不考虑他们所请求的文件的扩展名。
针对单个用户的广告电子商务网站。例如,当返回用户所提出的请求时,通配符应用程序映射应用程序将检查他们的身份,然后查询他们以前已观看或购买的项目。一旦通配符脚本映射将控制传送到被请求的页面,就可以显示适合该用户的广告。
要点您必须是本地计算机上Administrators组的成员或者必须被委派了相应的权限,才能执行下列步骤。作为安全性的最佳操作,请使用不属于Administrators组的帐户登录计算机,然后使用运行方式命令以管理员身份运行IIS管理器。
在命令提示符下,键入runas/user:administrative_accountname”mmc%systemroot%\system32\inetsrv\iis。msc”。
将通配符应用程序映射添加到Web服务器或网站
在IIS管理器中,展开本地计算机,展开“网站”文件夹,右键单击所需的网站或虚拟目录,然后单击“属性”。
单击相应的选项卡:“主目录”、“虚拟目录”、或“目录”。
在“应用程序设置”区域中,单击“配置”,然后单击“映射”选项卡。
要安装通配符应用程序映射,请进行以下操作:
在“映射”选项卡上,单击“插入”。
在“可执行文件”文本框中键入DLL的路径或单击“浏览”以找到该文件,如果该DLL文件是脚本引擎,选择“应用程序引擎”复选框,然后单击“确定”。
要编辑或删除通配符应用程序映射,请进行以下操作:
在“应用程序扩展”列表中,单击想更改的脚本映射。
单击“编辑”更改脚本映射,或单击“删除”删除脚本映射。
要更改通配符应用程序执行的顺序,在“通配符应用程序映射(执行顺序)”框中重新安排通配符应用程序映射,其方法是单击“上移”或“下移”按钮直到符合您想要的顺序为止。
注意请不要在通配符应用程序映射列表中多次列出同一应用程序。
。
1.文章《ASP.NET 2.0 URL映射技巧》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《ASP.NET 2.0 URL映射技巧》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好