• Asp.net Url改写方法


    Asp.Net Url改写方法
    一、伪静态方式(使用URLRewriter)
         1、改写方法    (文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933737.html)
         2、回发时处理方法(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933791.html)
         3、将Aspx改写成HTml方法(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933836.html)

    二、真实改写(使用System.Web.Routing)(文章地址:http://www.cnblogs.com/scottckt/archive/2011/01/12/1933893.html)

    一、伪静态方式改写方法
      1、UrlRewriter说明
        UrlRewriter 是微软封装好了的一个URL重写组件。
        下载地址:download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi
        此方案中有三个项目:
            URLRewriter:伪静态URL使用。真正实现重写的是此项目。
            ActionlessForm: 处理本页面的回发使用,比如分页。 
            RewriterTester:为测试项目
        要实现改写只需要在项目中引用URLRewriter.dll。

      2、使用方法

        UrlRewriter使用比较简单,只需要在Web.Config中配置一下即可。下边我用微软提供的例子RewriterTester作说明。
        1)在需要改写的URL的项目中引用生成的URLRewriter.dll。

        2)配置WEB.CONFIG文件,以Web.Config中添加经下内容。
     <configSections>
          
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
      
    </configSections>
      <RewriterConfig>
        
    <Rules>
          
    <!--
        Rules for Blog Content Displayer 
        为了便于观察结果。我把规则<LookFor>中的appx给删除了
    -->
          
    <RewriterRule>
            
    <LookFor>~/(\d{4})/(\d{2})/(\d{2})</LookFor>
            
    <SendTo>~/ShowBlogContent.aspx?year=$1&amp;month=$2&amp;day=$3</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/(\d{4})/(\d{2})/Default</LookFor>
            
    <SendTo><![CDATA[~/ShowBlogContent.aspx?year=$1&month=$2]]></SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/(\d{4})/Default</LookFor>
            
    <SendTo>~/ShowBlogContent.aspx?year=$1</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Default</LookFor>
            
    <SendTo>~/Default.aspx</SendTo>
          
    </RewriterRule>
     
     
          
    <!-- Rules for Product Lister -->
          
    <RewriterRule>
            
    <LookFor>~/Products/Default</LookFor>
            
    <SendTo>~/ListCategories.aspx</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Beverages</LookFor>
            
    <SendTo>~/ListProductsByCategoryNo.aspx?CategoryID=1</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Condiments</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=2</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Confections</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=3</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Dairy</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=4</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/GrainsCereals</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=5</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/MeatPoultry</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=6</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Produce</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=7</SendTo>
          
    </RewriterRule>
          
    <RewriterRule>
            
    <LookFor>~/Products/Seafood</LookFor>
            
    <SendTo>~/ListProductsByCategory.aspx?CategoryID=8</SendTo>
          
    </RewriterRule>
        
    </Rules>
      
    </RewriterConfig>


        <httpModules>
          
    <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
        
    </httpModules>


        配置说明:    

       (1)、<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
       用于指定配置节"RewriterConfig"的处理程序类的名称为”URLRewriter.Config.RewriterConfigSerializerSectionHandler”,该类存在于bin目录下的URLRewriter.dll文件中
       (2)、<RewriterRule/>标签里面就是重写的一个模块,
        <LookFor/>里面的是重写后的地址。注LookFor中有的使用了正则来匹配相应的页面。如: <LookFor>~/(\d{4})/Default</LookFor>
        <SendTo/>则是原地址。 如果原地址中用到参数,可以用“$索引号”的方式来调用lookFor中相应的值,

          如<SendTo>~/ShowBlogContent.aspx?year=$1</SendTo>。$1表示调用<LookFor>中的第一个正则表达式。

       3)测试结果 
        运行项目,以地址栏中输入 http://hostname/2003/Default,
        服务器会指向http://hostname/ShowBlogContent.aspx?year=2003的页面。
     

     

    用此方法注意:
        1.不能使用Windows身份验证用户权限. 应使用Form验证,在web.config配置为:<authentication mode="Forms" />
        2.使用Request.ServerVariables["script_name"]获得的路径仍然是:ShowPlay.asp?vid=1
        3.被重写的地址如果回发,重写将失效,显示的地址将是ShowPlay.asp?vid=1

    参考文章:http://www.cnblogs.com/rickel/archive/2007/02/04/639616.html

     
  • 相关阅读:
    ASP.NET中的ViewState
    (标记)Spring.Net+NHibenate+Asp.Net mvc +ExtJs 系列 By 似水流年
    C#中类的定义
    苹果CMS搭建影视网站教程
    Java之冒泡排序
    Java之数组扩容
    Linux之netstat命令基本使用
    Linux之systemctl命令基本使用
    Oracle11g R2 安装教程(非常详细 )
    Linux之firewall防火墙开启和关闭
  • 原文地址:https://www.cnblogs.com/scottckt/p/1933737.html
Copyright © 2020-2023  润新知