• 利用UrlRewrite,asp.net动态生成htm页面


    前段时间做项目,一直都在寻找一种动态生成htm页面的方法,要求配置简单,和项目无关。
    功夫不负有心人,终于被我找到了,只需要在web.config中进行简单配置,就可以达到动态生成静态页面的效果,同时又不影响Url重定向。web.config中需要注意的配置节为<configuration>、<RewriteConfig>、<httpModules>、<httpHandlers>,在这些配置节里边都有注释,容易看懂。
    <?xml version="1.0" encoding="utf-8"?>
    <!-- 
        注意: 除了手动编辑此文件以外,您还可以使用 
        Web 管理工具来配置应用程序的设置。可以使用 Visual Studio 中的
         “网站”->“Asp.Net 配置”选项。
        设置和注释的完整列表在 
        machine.config.comments 中,该文件通常位于 
        \Windows\Microsoft.Net\Framework\v2.x\Config 中
    -->
    <configuration>

      
    <!-- RUL重写开始 -->
      
    <configSections>
        
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter"/>
      
    </configSections>
      
    <RewriterConfig>
        
    <Rules>
          
    <!--地址重写规则-->
          
    <!--首页,定位到静态页面-->
          
    <RewriterRule>
            
    <Type>Static</Type>
            
    <LookFor>~/Default\.aspx</LookFor>
            
    <SendTo>~/Default.htm</SendTo>
          
    </RewriterRule>
          
    <!--二级页面,定位到动态页面-->
          
    <RewriterRule>
            
    <Type>Dynamic</Type>
            
    <LookFor>~/List\.aspx</LookFor>
            
    <SendTo>~/Show.aspx</SendTo>
          
    </RewriterRule>
        
    </Rules>
      
    </RewriterConfig>
      
    <!-- RUL重写结束 -->

      
    <appSettings/>
      
    <connectionStrings/>
      
    <system.web>
        
    <!-- 
                设置 compilation debug="true" 将调试符号插入
                已编译的页面中。但由于这会 
                影响性能,因此只在开发过程中将此值 
                设置为 true。
            
    -->
        
    <httpModules>
          
    <!--URL重写-->
          
    <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
        
    </httpModules>
        
        
    <httpHandlers>
          
    <!--生成静态页面-->
          
    <add verb="*" path="*.aspx" validate="false" type="URLRewriter.RewriterFactoryHandler, URLRewriter"/>
        
    </httpHandlers>
        
        
    <compilation debug="false" />
        
    <!--
                通过 <authentication> 节可以配置 ASP.NET 使用的 
                安全身份验证模式,
                以标识传入的用户。 
            
    -->
        
    <authentication mode="Forms" />
        
    <!--
                如果在执行请求的过程中出现未处理的错误,
                则通过 <customErrors> 节可以配置相应的处理步骤。具体说来,
                开发人员通过该节可以配置
                要显示的 html 错误页
                以代替错误堆栈跟踪。

            <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
                <error statusCode="403" redirect="NoAccess.htm" />
                <error statusCode="404" redirect="FileNotFound.htm" />
            </customErrors>
            
    -->
        
    <globalization requestEncoding="utf-8" responseEncoding="utf-8"/>
      
    </system.web>
    </configuration>
    两个关键的类是ModuleRewriterCreateHtmFactoryHandler
    ModuleRewriter类用于Url重定向,代码如下:
    ModuleRewriter
    CreateHtmFactoryHandler类用于生成静态页面,代码如下:
    CreateHtmFactoryHandler
    以上是两个主要的类,还有一些辅助的类,我把测试项目附上,里边有源代码和示例。
    点击这里下载:源代码和示例
    声明一下,我是在修改一个开源的项目(UrlRewrite)来实现上述功能。有关UrlRewrite介绍,请看这里,ASP.NET 中执行 URL 重写
  • 相关阅读:
    Java应用开发中的SQL注入攻击
    TOSCA自动化测试工具ppt
    SQL Server怎么备份数据库
    翻翻git之---一个丰富的通知工具类 NotifyUtil
    ZOJ
    高速掌握Lua 5.3 —— Lua与C之间的交互概览
    poj1649 Rescue(BFS+优先队列)
    面向对象在JavaScript中的接口实现
    dedecms织梦后台password忘记了怎么办?dedecms织梦后台password忘记怎样找回password?
    [ACM] POJ 3233 Matrix Power Series (求矩阵A+A^2+A^3...+A^k,二分求和或者矩阵转化)
  • 原文地址:https://www.cnblogs.com/fengfeng/p/1058890.html
Copyright © 2020-2023  润新知