当前位置:  编程技术>.net/c#/asp.net

C# 伪静态页面的二个实现代码

    来源: 互联网  发布时间:2014-08-30

    本文导语:  方法1,在页面global.asax中,参考代码如下:   代码示例: void Application_BeginRequest(object sender, EventArgs e)     {         HttpContext context = ((HttpApplication)sender).Context;         string oldurl = context.Request.Path.ToLower();         if...

方法1,在页面global.asax中,参考代码如下:
 

代码示例:

void Application_BeginRequest(object sender, EventArgs e)
    {
        HttpContext context = ((HttpApplication)sender).Context;

        string oldurl = context.Request.Path.ToLower();

        if ( ( oldurl.IndexOf("-") > 0 && oldurl.IndexOf(".") == -1) || (oldurl.IndexOf("-") > 0 && oldurl.IndexOf("aspx") > 0) )
        {
            string[] url = oldurl.Substring(oldurl.LastIndexOf("/") + 1).Replace(".aspx", "").Split('-');

            string path = oldurl.Substring(0, oldurl.LastIndexOf("/") + 1);
           
            //file
            string file = url[0];
            file = file.Replace("about", "detail");
            file = file.Replace("news", "list");
            file = file.Replace("down", "detail");
            file = file.Replace("case", "album");
            file = file.Replace("contact", "detail");
           
            //query
            string query = "";
           
            for ( int i=1;i
                {

                    var context = ((HttpApplication)sender).Context;
                    var request = context.Request;
                    var url = request.Url;
                    if (!VerifyUrl(/blog_article/url/index.html))
                    {
                        string input = url.PathAndQuery.ToLower();
                        //Loger.Debug("PathAndQuery-->" + input);
                        //Loger.Debug("AbsolutePath-->" + url.AbsolutePath);
                        //Loger.Debug("AbsoluteUri-->" + url.AbsoluteUri);
                        //Loger.Debug("DnsSafeHost-->" + url.DnsSafeHost);
                        //Loger.Debug("LocalPath-->" + url.LocalPath);
                        //Loger.Debug("AppDomain.CurrentDomain.BaseDirectory-->" + AppDomain.CurrentDomain.BaseDirectory);
                        //Loger.Debug("Globals.GlobalsVirtualFilePath-->" + Globals.GlobalsVirtualFilePath);
                        if (input.StartsWith(Globals.GlobalsVirtualFilePath))
                            input = input.Remove(0, Globals.GlobalsVirtualFilePath.Length);
                        string viewmode = Globals.ViewMode;
                        var themeName = request.QueryString["theme"] ?? "";
                        if (string.IsNullOrEmpty(themeName))
                        {
                            themeName = Globals.ThemeName;
                        }
                        if (input == "/")
                            input = "/index.aspx";
                        if (viewmode == "Rewrite")
                        {

                            Loger.Debug("now input-->" + input);
                            Match match = regexRewritePath.Match(input);
                            if (match.Success && match.Groups.Count == 5)
                            {
                                var captures3 = match.Groups[3].Captures;
                                var captures4 = match.Groups[4].Captures;
                                var itemCount = match.Groups[3].Captures.Count;
                                var list = new List();
                                for (var i = 0; i < itemCount; i++)
                                {
                                    list.Add(string.Concat(captures3[i].Value, "=", captures4[i].Value));
                                }
                                context.RewritePath(Globals.AspxFileUrl(themeName, match.Groups[1].Value + ".aspx?" + string.Join("&", list.ToArray())));
                                return;
                            }
                        }
                        var fileName = regexFileName.Match(request.Path.ToLower()).Groups[1].ToString();
                        if (string.IsNullOrEmpty(fileName))
                            return;
                        new ConvertTheme(context)
                        {
                            ThemeName = themeName,
                            ViewMode = viewmode
                        }.Display(fileName);
                    }

                });
        }
        private static bool VerifyUrl(/blog_article/Uri uri/index.html)
        {
            var url = uri.AbsolutePath.ToLower();
            if (url.StartsWith(Globals.GlobalsVirtualFilePath))
                url = url.Remove(0, Globals.GlobalsVirtualFilePath.Length);
            return uri.IsFile
           || url.IndexOf("site") != -1
           || url.IndexOf("sys") != -1
           || url.IndexOf("html") != -1
           || url.IndexOf("user") != -1
           || url.IndexOf("bbs") != -1
           || url.IndexOf("_module.aspx") != -1
           || url.IndexOf("webresource.axd") != -1
           || url.IndexOf("scriptresource.axd") != -1;
        }
}


    
 
 

您可能感兴趣的文章:

  • C# 静态方法与非静态方法的区别分析
  • C#中实现抽象类里建立静态方法
  • C# 静态构造函数使用总结
  • c#静态方法和非静态方法详细介绍
  • C#生成单页静态页简单实例
  • c#只读字段和常量的区别,以及静态构造函数的使用实例
  • 学习C#中的静态构造函数与复制构造函数
  • C#静态变量与实例变量实例分析
  • 学习C#静态函数及变量的一个精典例子与代码
  • C#中静态的深入理解
  • C#只读字段和常量的区别 静态构造函数的例子
  • C# .NET自定义类实现伪静态页面的代码
  • C# 静态变量与静态方法实例研究
  • C# 伪静态 URL重写配置一例
  • C# 静态类与非静态类、静态成员的区别分析
  • C#中静态构造函数的几点说明介绍
  • C# .Net实现Url地址重写(伪静态)的方法
  • 深入理解c# static 静态数据成员和方法
  • 深入C#实例成员和静态成员详解
  • C# 伪静态实现方法与代码示例
  • 一个静态库包含多个函数,应用程序连接了库中的某个函数,应用程序目标代码中是否还包含了该静态库中的其他函数代码?
  • C/C++代码静态分析插件 SourceInsight_Scan
  • 静态源代码分析工具 RIPS
  • asp.net静态方法弹出对话框的一例代码
  • Java中的static静态代码块的使用详解
  • PHP 动态生成静态HTML页面示例代码
  • 针对 Python 的代码静态分析工具 PySonar
  • php结合smarty生成静态页面 php文章内分页代码
  • asp.net伪静态(URL重写)代码一例
  • Java 项目生成静态页面的代码
  • asp.net 伪静态 URL重写的纯代码实现方法
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 一个基本概念问题:静态函数只能调用静态方法,类的成员函数也是静态的吗?
  • linux中静态链接库调用了另一个静态链接库
  • 如何 用一个静态库 生成 另一个静态库
  • 请教:(static)静态变量和静态方法是什么意思?
  • 有把两个静态库.a合成一个静态库的简单方法吗
  • linux 生成静态库的时候怎么连接别的静态库
  • 静态博客 静态blog
  • 静态库动态库同时存在时,如何指定使用静态库
  • 如何在一个静态链接库中链接另一个静态链接库?
  • gcc的静态库.lib怎末在编译的时候连接。对了静态库是自己的???
  • PHP static局部静态变量和全局静态变量总结
  • 在静态上下文中不能引用非静态方法test(),天啊,为什么我的main()不能调用任何其它函数?
  • 静态函数,静态变量
  • java有无像vb那样的静态变量?java的staic是类的属性,那末,静态变量如何声明?
  • c++静态局部变量和静态函数示例
  • 关于C++静态成员函数访问非静态成员变量的问题
  • 急求静态库引用静态库,该如何编译链接!!!
  • asp.net伪静态后真正的静态文件无法访问的解决方法
  • 请问在LINUX下怎么设置静态IP?我在虚拟机中不能设置静态IP怎么办?
  • makefile.am中生成.a静态库的同时,链接其他.a静态库或.la动态库的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3