• .net重写url浅谈


    最近小项目要求重写url找了下资料用到了MS的2个dll,微软的例子写得太不明显了。后来终于改好了。

    ActionlessForm.dll------用来处理回发

    URLRewriter.dll-----  是微软封装好了的一个URL重写组件

    添加引用----

    具体的使用说明请去看

    http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection123121120120

    比我说得好得多。。

    具体使用方法:

    首先web.config的配置:

    <?xml version="1.0"?>
    <configuration>
      
    <configSections>
        
    <section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler,
     URLRewriter
    " />
      
    </configSections>
        
    <RewriterConfig>
            
    <Rules>
                
    <RewriterRule>
                    
    <LookFor>~/ListCategories\.aspx</LookFor>
                    
    <SendTo>~/Default.aspx</SendTo>
                
    </RewriterRule>
                
    <RewriterRule>
                    
    <LookFor>~/(\d+)\.html</LookFor>
                    
    <SendTo>~/Cover.aspx?id=$1</SendTo>
                
    </RewriterRule>
            
    </Rules>
        
    </RewriterConfig>
        
    <system.web>
            
    <httpModules>
                
    <add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter"/>
            
    </httpModules>
            
    <compilation debug="true"/>
    </system.web>
    </configuration>

    主要配置的代码是这些。其他的根据自己的需要和.net的版本自行添加。

    然后Default.aspx,Cover.aspx,新建2个页面

    Default.aspx:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title>无标题页</title>
    </head>
    <body>
        
    <form id="form1" runat="server">
        
    <div>
        
    <href="ListCategories.aspx">ListCategories.aspx</a>
        
    <href="30.html">30.html</a>
        
    </div>
        
    </form>
    </body>
    </html>

    Cover.aspx:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Cover.aspx.cs" Inherits="Cover" %>
    <%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        
    <title>Cover</title>
    </head>
    <body>
        
    <skm:form id="form1" runat="server">
        
    <div>
        Cover页面
        
    <h4><href="javascript:void(0)" onclick="history.go(-1)">返回上一页</a></h4>
            
    <asp:Button ID="Button1" runat="server" Text="Button" />
        
    </div>
        
    </skm:form>
    </body>
    </html>

    Cover.aspx.cs:

    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;

    public partial class Cover : System.Web.UI.Page
    {
        
    protected void Page_Load(object sender, EventArgs e)
        {
            
    if (Request.QueryString["id"== null)
            {
                Response.End();
            }
            
    else
            {
                
    int id = Convert.ToInt32(Request.QueryString["id"]);
                Response.Write(id);
            }
        }
    }

    还要去对iis设置:

    这样的话伪静态就可以用了
    C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll ---这是上面的路径

    浏览Default.aspx页

     ListCategories.aspx --页面其实在服务器上面是没有的。它里面的内容是Default.aspx的内容,因为配置文件里面设置了

    写得有点乱。 

    本例子是和微软的重写url基本一样的。算是简单化了一点点呵呵。

    源代码

    作者:ret00100
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    切分文本行
    oracle 导出【转】
    SQL 表A不在表B记录
    Oracle 数据库操作
    oracle 跨表更新
    WPF : ViewPort3D, ModelVisual3D XAML example
    WPF : 3D 最简单的WPF 3D
    WPF : StoryBoard用法
    WPF/SilverLight学习计划
    WPF : 3D 给GeometryModel3D对象贴图
  • 原文地址:https://www.cnblogs.com/ret00100/p/1581778.html
Copyright © 2020-2023  润新知