VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > sql数据库 >
  • sql语句大全之浅谈URL重写 及 静态化

浅谈URL重写 及 静态化

 

大家好,欢迎关注我的个人blog!

1.url重写,首先我是先在Application_BeginRequest中捕获url重写了规则

 
1
2
3
4
5
6
7
8
9
10
11
protected void Application_BeginRequest(Object sender, EventArgs e)
        {
            string url = Request.AppRelativeCurrentExecutionFilePath; //
            Match match = Regex.Match(url, @"~/BookList2_(\d+)\.aspx");
            if (match.Success)
            {
                int id = Convert.ToInt32(match.Groups[1].Value);
                Context.RewritePath(string.Format("/BookList2.aspx?categoryId={0}", id));
            }
 
        }

 

盗用了大神写好的两个UrlRewrite类。。。

不敢独享,分享之...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class UrlRewriter : HtmlTextWriter
    {
        public UrlRewriter(HtmlTextWriter writer)
            base(writer)
        {
            this.InnerWriter = writer.InnerWriter;
        }
       
        /// <summary>
        /// 重写基类的WriteAttribute()方法
        /// </summary>
        /// <param name="name">要写的属性的名称</param>
        /// <param name="value">要写的属性的值</param>
        /// <param name="fEncode"></param>
        public override void WriteAttribute(string name, string value, bool fEncode)
        {
            if (name.ToLower() == "action")
            {
                var context = HttpContext.Current;
                if (context.Items["ActionRewrite"] == null)
                {
                    value = context.Request.RawUrl;//原始路径
                    context.Items["ActionRewrite"] = true;//设置标记,已经重写action属性.
 
                }
            }
           
            base.WriteAttribute(name, value, fEncode);
        }
    }

 

复制代码
public class UrlRewriterControlAdapter:ControlAdapter
    {
        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(new UrlRewriter(writer));
        }
    }
复制代码

 

黏贴至根目录,url重写搞定,原理性的东东,等待我看懂之后与大家说说 呵呵.... 看谁先看懂...

然后,我就开始了书籍详情页的页面静态化的工作。

2.页面静态化就好整点了,就是拼接字符串。最后按照一定的存放规则将生成好的html文件存放即可。

这里我用到了模板页的应用,注意模板页调用js css img 等文件的时候,记得写绝对路径,不然会报错,因为 相对路径已经找不到 这些文件了,因为以一定的规则来存放html页了。

然后,晚上回来反正闲着也是闲着看看url重写,一看微软有很简单的应用。有个UrlRewrite.dll组件可以轻松完成url重写的工作,于是乎,我就心血来潮,开始按照博客大牛的方法搞起了。

原来真的很简单,config里面添加规则就ok了。

但是,当我点击我生成的静态页的时候,就发生问题了。错误提示....

没有为扩展名“.html”注册的生成提供程序。可以在 machine.config 或 web.config 中的 <compilation><buildProviders> 节注册一个。请确保所注册的提供程序具有包含值“Web”或“All”的 BuildProviderAppliesToAttribute 特性。

哈哈,搞晕我...不懂原理的我,眼泪掉下来....

后来网上找了些许方法,都没搞定的我,将代码一一改了回去了。。。。

等待更牛B的人,前来解惑...



相关教程