ASP.NET 中执行 URL 重写

具体实现步骤(其中的一种实现方法):web

  1、下载相关的DLL(ActionlessForm.dll和UrlRewriter.dll

    http://download.csdn.net/detail/yingwanghbx/4510059正则表达式

  2、在项目中引用那两个DLL文件

    右击项目,点击Add Reference,选择Browse,而后选择相应的DLL,点击OK便可。api

  3、添加browser文件

  一、右击项目,点击Add-New Item,选择Browser File,取个有意义的名字。在生成的*.browser文件的browsers节点中添加以下代码:less

复制代码
<!--URLRewriter-->
    <browser refID="Default">
      <controlAdapters>
        <adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
               adapterType="URLRewriter.Form.FormRewriterControlAdapter"/>
      </controlAdapters>
    </browser>
复制代码

  二、在配置文件web.config中system.web节点内添加httpModulespost

<!--URLRewriter
    type:HttpModule的标识号和类库名称
    name:取一个较为友好的名称-->
    <httpModules>
      <add type="URLRewriter.RewriterModule, URLRewriter" name="RewriterModule"/>
    </httpModules>

  三、而后就是在configuration节点下添加(必须是第一个子节点):测试

复制代码
<!--URLRewriter-->
  <configSections>
    <section name="CustomConfiguration" type="URLRewriter.Config.UrlsSection, URLRewriter"/>
  </configSections>
  <CustomConfiguration>
    <urls>
      <!--([\w]+)表示,1到n个字母或数字或下划线或汉字组成-->
      <add virtualUrl="~/Default/([\w]+)*" destinationUrl="~/Default.aspx?username=$1"/>
      <add virtualUrl="~/Default/([\w]+)*/([\w]+)*" destinationUrl="~/Default.aspx?newsTypeId=$1&amp;newsWhere=$2"/>
      <add virtualUrl="~/page/user/login" destinationUrl="~/page/user/login.aspx"/>
      <add virtualUrl="~/page/user/registe" destinationUrl="~/page/user/registe.aspx"/>
      <add virtualUrl="~/page/index" destinationUrl="~/page/index.aspx"/>
    </urls>
  </CustomConfiguration>
复制代码

  如上,在不须要传参的状况下,能够直接在virtualUrl里面写要转化地址,destinationUrl为真实地址。在须要传参的状况下,用正则表达式代替,多个参数,在destinationUrl中用&amp分隔,在virtualUrl中用本身规定的符号代替,我是用的‘/’分隔的。网站

  四、测试,在Default的Page_Load中添加以下代码this

if (!string.IsNullOrEmpty(Request.Params["newsTypeId"]))
{
    string newsId = Request.Params["newsTypeId"].ToString();
    string newsWhere = Request.Params["newsWhere"].ToString();
    Response.Write("newsid:" + newsId + "<br/>newsWhere:" +newsWhere);
} 

结果以下:url

  五、加入窗体回传保持的组件:spa

  在你的这个页面中加入: <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 再把你的<Form...>改成: <skm:Form id="你的表单名" method="post" runat="server"> ..... </skm:Form>

 

  六、在IIS7.5里配置

  

在IIS中新建网站(端口号8111)

 

      直接运行http://localhost:8111/

 

    错误截图

 

 

 

 

 

 

配置方法:

 

 

 

 

 

 

2、添加通配符脚本映射,选择:C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

 

 

 

 

3、找到和网站相对的链接池,选择framework 4.0  经典模式

 

 

 

 

 

 

 

4、选择应用程序链接池,高级设置,启用32位应用程序,设为true

 

相关文章
相关标签/搜索