UrlRewrite伪静态


1.首先添加URLRewriter.dll、ActionlessForm.dll加到bin文件夹中,添加引用

 注:URLRewriter.dll实现伪静态  ActionlessForm.dll是分页时起作用,如果不使用该控件仍会跳转到aspx页面

ActionlessForm.dll使用方法:在每个aspx页面添加<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

 然后,将 <form runat="server">****</form>替换为: <skm:Form id="Form1" method="post" runat="server">*****</skm:Form>

2.按如下(红色部分)操作修改配置文件

<?xml version="1.0"?>
<configuration>
  <configSections>
    <!--URLRewriter_1 URL开始-->
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,URLRewriter"/>
    <!--URLRewriter_1 URL结束-->

  </configSections>
  <appSettings/>
  <connectionStrings/>
  <!--URLRewriter_2 URL重写开始-->
  <RewriterConfig>
    <Rules>
      <RewriterRule>
        <LookFor>~/(\w*)_(\w*).html</LookFor>
        <SendTo><![CDATA[~/WebForm1.aspx?ID=$1&Page=$2]]></SendTo>
       
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/index.html</LookFor>
        <SendTo>~/Default.aspx</SendTo>
      </RewriterRule>
      <RewriterRule>
        <LookFor>~/(\w*).html</LookFor>
        <SendTo>~/WebForm1.aspx?ID=$1</SendTo>
      </RewriterRule>
    </Rules>
  </RewriterConfig>
  <!--URLRewriter_2 URL重写结束-->

  <system.web>
    <compilation debug="true" targetFramework="4.0">
    </compilation>
    <authentication mode="Windows"/>
    <httpModules>
      <!--URLRewriter_3开始-->
      <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
      <!--URLRewriter_3结束-->

    </httpModules>
    <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
  </system.web>
  <!--
        在 Internet 信息服务 7.0 下运行 ASP.NET AJAX 需要 system.webServer
        节。对早期版本的 IIS 来说则不需要此节。
    -->
  <system.webServer>
    <handlers>
      <remove name="html"/>
      <add name="html" path="*.html" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="Script" preCondition="classicMode,runtimeVersionv2.0,bitness32"/>
    </handlers>
  </system.webServer>
</configuration>



3.程序中转向时调用<LookFor></LookFor>节点中配置的URL,注意参数

4.在iis中添加LookFor 节点配置的后缀

按照*aspx的配置添加映射(此例添加html映射)


付代码:

Default.aspx.cs:

        protected void Page_Load(object sender, EventArgs e)
        {
            RedirectUrl();
        }

        protected void RedirectUrl()
        {
            Response.Redirect("sean_chang.html");
        }

WebForm1.aspx.cs

            if (!IsPostBack)
            {
                Response.Write("实际调用WebForm1.aspx页面,参数ID="+ Request.QueryString["ID"]);

                Response.Write("<script type='text/javascript'>alert('参数page=" + Request.QueryString["Page"] + "')</script>");
            }

Default页面跳转到sean_chang.html页面 实际上访问的是WebForm1.aspx页面 ,并且根据webconfig配置可知 

实际访问的url路径为WebForm1.aspx?ID=sean&Page=chang 从而实现伪静态………………………………………………

页面显示:


posted @ 2014-09-26 11:23  sean-日积月累  阅读(201)  评论(0编辑  收藏  举报