• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > ASP.NET 2.0 URL映射技巧

ASP.NET 2.0 URL映射技巧

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了iis注册asp.net2.0,下载asp.net 2.0,asp net2.0,安装asp.net 2.0,注册asp.net2.0等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
在项目中经常要进行如下映射
将
http://onewww.net/a.aspx?name=llinzzi
映射到
http://onewww.net/llinzzi
首先要解决2个问题
第一是支持通配符的映射 URL映射是asp.net2.0新增的功能,不支持通配符
于是采用了NBEAR的 NBear.Web.Modules.UrlRewriteRules 进行通配符映射


<?xml version="1.0"?>
<!-- 
    注意: 除了手动编辑此文件以外,您还可以使用 
    Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
     “网站”->“Asp.Net 配置”选项。
    设置和注释的完整列表在 
    machine.config.comments 中,该文件通常位于 
    \Windows\Microsoft.Net\Framework\v2.x\Config 中
-->
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
  <configSections>
    <section name="UrlRewriteRules" type="NBear.Web.Modules.UrlRewriteRules, NBear.Web"/>
  </configSections>
  <UrlRewriteRules>
    <Rule key="/(.*)/" value="/a.aspx?name=$1" />
    <Rule key="/(.*)" value="/a.aspx?name=$1" />
  </UrlRewriteRules>  

  <appSettings/>




  <system.web>

    <sessionState timeout="200" />
    <httpModules>
      <add type="NBear.Web.Modules.UrlRewriteModule, NBear.Web" name="UrlRewriteModule"/>
    </httpModules>

    <!-- 
            设置 compilation debug="true" 将调试符号插入
            已编译的页面中。但由于这会 
            影响性能,因此只在开发过程中将此值 
            设置为 true。
        -->
        <compilation debug="true" defaultLanguage="c#" />
        <!--
            通过 <authentication> 节可以配置 ASP.NET 使用的 
            安全身份验证模式,
            以标识传入的用户。 
        -->
        <authentication mode="Windows"/>
        <!--
            如果在执行请求的过程中出现未处理的错误,
            则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
            开发人员通过该节可以配置
            要显示的 html 错误页
            以代替错误堆栈跟踪。

        <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
            <error statusCode="403" redirect="NoAccess.htm" />
            <error statusCode="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处理,所以成功.
于是更改映为
  <Rule key="/(.*)/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 
测试,成功!

搜索了下关于 通配符应用程序映射 的资料

安装通配符应用程序映射
在 IIS 6.0 中,管理员可以在每次开始对网站或虚拟目录发送请求时,将该网站或虚拟目录配置为运行 Internet 服务器 API (ISAPI),而不管所请求文件的扩展名。

当 IIS Web 服务器接受到来自客户端的请求时,Web 服务器会查看在请求中命名的文件扩展名,以确定有哪一个 ISAPI 或公共网关接口 (CGI) 应用程序来处理该文件。例如,如果请求名为 Default.asp 的网页时,IIS 可以从应用程序映射列表中知道 Default.asp 由 Asp.dll ISAPI 应用程序处理。

如果想在所请求的页面发送到映射的应用程序前对每次客户端请求执行特定的任务,可以编写一个 ISAPI 筛选器在请求到达时将其截获。但是,ISAPI 筛选器具有以下限制:

它们不能访问请求主体,而只访问头。 
它们只能在每个站点配置,而不能在每个虚拟目录配置。 
它们不应包含长期运行的操作,因为 ISAPI 筛选器是同步进行的。 
它们的灵活性较小,因为 ISAPI 筛选器 API 的功能比 ISAPI 扩展 API 少,后者用于编写 ISAPI 应用程序。 
它们在时间上难以管理。 
它们是事件驱动的。 



通过使用通配符应用程序映射,您可以在所请求的页面发送到其映射应用程序之前截获每个请求。其效果就像拥有处理每个文件名扩展的应用程序映射。这就是使用“通配符”来命名这一功能的原因。使用通配符应用程序映射的应用程序只能是 ISAPI 应用程序。

客户端请求采用以下路由:

传入的请求由安装在根网站上的任何现有的 ISAPI 筛选器处理。ISAPI 筛选器依次执行。 
请求被发送到任何现有的通配符应用程序映射的应用程序,这些程序也是依次执行的。如果传入的请求是对虚拟目录中的 Web 文件进行请求的,且通配符应用程序映射已安装在了该虚拟目录和根网站上,那么只有安装在该虚拟目录的通配符应用程序映射才被执行。如果该虚拟目录上没有安装通配符应用程序映射,则将执行安装在网站上的通配符应用程序映射。换句话说,通配符应用程序映射只在所请求的 Web 文件所处的应用程序中不存在映射时才会被继承。 
IIS 服务器会查看应用程序映射表,以确定由哪个 ISAPI 应用程序或 CGI 脚本专门处理所请求的文件。 
每个阶段都可以附加响应,然后传回给客户端。 
使用通配符应用程序映射
通配符应用程序映射可以在以下方案中使用:

高安全性 Web 应用程序(如银行业应用程序)要求对每个提出请求的用户根据用户名、密码和帐户号数据库进行身份验证。例如,一旦用户通过了身份
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET 修复 IIS 映射具体实现步骤
  • ASP.NET 2.0中的数据操作之九:跨页面的主/从报表
  • ASP.NET 2.0中的数据操作之八:使用两个DropDownList过滤的主/从报表
  • ASP.NET 2.0中的数据操作之七:使用DropDownList过滤的主/从报表
  • ASP.NET2.0使用Enter Key作为默认提交问题分析(附源码)
  • ASP.NET用户注册实战(第11节)
  • asp.net无法获取iis目录的问题解决方法
  • asp.net2.0中css失效的解决方法
  • asp.net不用设置iis实现url重写 类似伪静态路由
  • Asp.net 2.0 无刷新图片上传 显示缩略图 具体实现

相关文章

  • 2017-05-11ASP.NET 根据汉字获取汉字拼音的首字母(含多音字)
  • 2018-08-20基于nopCommerce的开发框架 附源码
  • 2017-05-11Asp.net core WebApi 使用Swagger生成帮助页实例
  • 2017-05-11VS2015中C#版本6.0的新特性 你需要知道
  • 2017-05-11asp.net+jquery ajax无刷新登录的实现方法
  • 2017-05-11asp.net URL重写简化版 速学URL重写
  • 2017-05-11js 父页中的单选按钮取值
  • 2017-05-11c#实现根据网络IP显示地理位置功能示例
  • 2017-05-11ASP.NET性能优化八条建议
  • 2017-05-11在ashx文件中使用session的解决思路

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • ASP.NET操作EXCEL的总结篇
    • DataList绑定到Row[]行集合的问题的方法
    • ASP.NET 程序优化 小结
    • Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
    • asp.net下降文本格式数据导入到数据库中的代码
    • asp.net 防止SQL注入攻击
    • .NET 扩展实现代码
    • C# Base64编码
    • Win 2000下ASP.NET开发环境的配置
    • ASP.NET 在线文件管理

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有