<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        asp.net 不用組件的URL重寫(適用于較大型項目)

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 22:44:26
        文檔

        asp.net 不用組件的URL重寫(適用于較大型項目)

        asp.net 不用組件的URL重寫(適用于較大型項目):先在網(wǎng)站根目錄下建立一個config文件夾,再在此文件架下建立一個urls.config文件,這里記錄url的配置信息代碼如下: 代碼如下:<xml version=1.0 encoding=utf-8> <urls> <rewrite name=default pa
        推薦度:
        導讀asp.net 不用組件的URL重寫(適用于較大型項目):先在網(wǎng)站根目錄下建立一個config文件夾,再在此文件架下建立一個urls.config文件,這里記錄url的配置信息代碼如下: 代碼如下:<xml version=1.0 encoding=utf-8> <urls> <rewrite name=default pa

        先在網(wǎng)站根目錄下建立一個config文件夾,再在此文件架下建立一個urls.config文件,這里記錄url的配置信息代碼如下:
        代碼如下:
        <?xml version="1.0" encoding="utf-8"?>
        <urls>
        <rewrite name="default"
        path="/default-{0}-{1}.aspx"
        pattern = "/default-(\d+)(-(\d+))?.aspx"
        page="/default.aspx"
        querystring="id=$1^page=$3" />
        </urls>

        我這里只寫了一種規(guī)則,然后修改網(wǎng)站的web.config文件,修改后的代碼為:
        代碼如下:
        <?xml version="1.0"?>
        <configuration>
        <appSettings/>
        <connectionStrings/>
        <system.web>
        <authentication mode="Windows"/>
        <httpModules>
        <add type="my.Forum.HttpModule" name="HttpModule"/>
        </httpModules>
        <compilation debug="true"/>
        </system.web>
        <!--
        在 Internet 信息服務 7.0 下運行 ASP.NET AJAX 需要 system.webServer
        節(jié)。對早期版本的 IIS 來說則不需要此節(jié)。
        -->
        <system.webServer>
        <validation validateIntegratedModeConfiguration="false"/>
        <modules>
        <add type="my.Forum.HttpModule" name="HttpModule"/>
        </modules>
        </system.webServer>
        </configuration>

        本來只寫一個
        代碼如下:
        <httpModules>
        <add type="my.Forum.HttpModule" name="HttpModule"/>
        </httpModules>

        就可以了,我這里寫了兩個主要是為了演示如何兼容IIS7 ,然后在解決方案下新建一個項目(類庫),起什么名字無所謂,主要是這個項目下一定要有一個命名空間為my.Forum的類文件。

        具體代碼我貼出來 詳細的解釋我都寫在注釋里了。
        代碼如下:
        //用到的命名空間
        using System;
        using System.Diagnostics;
        using System.Threading;
        using System.Web;
        using System.Xml;
        using System.Text.RegularExpressions;
        using System.IO;

        //注意名稱空間
        namespace my.Forum
        {
        //繼承自IHttpModule接口
        public class HttpModule : System.Web.IHttpModule
        {
        /// <summary>
        /// 實現(xiàn)接口的Init方法
        /// </summary>
        /// <param name="context"></param>
        public void Init(HttpApplication context)
        {
        //建立個委托讓他執(zhí)行下面的ReUrl_BeginRequest事件
        context.BeginRequest += new EventHandler(ReUrl_BeginRequest);
        }
        /// <summary>
        /// 實現(xiàn)接口的Dispose方法
        /// </summary>
        public void Dispose()
        {
        }
        private void ReUrl_BeginRequest(object sender, EventArgs e)
        {
        HttpContext context = ((HttpApplication) sender).Context;
        string requestPath = context.Request.Path.ToLower();
        //SiteUrls是下面的一個類,這里大家可以重構(gòu)下
        foreach (SiteUrls.URLRewrite url in SiteUrls.GetSiteUrls().Urls)
        {
        //是否找到了匹配選項
        if (Regex.IsMatch(requestPath, url.Pattern, RegexOptions.None | RegexOptions.IgnoreCase))
        {
        //開始替換成我們程序能讀懂的url
        string newUrl = Regex.Replace(requestPath.Substring(context.Request.Path.LastIndexOf("/")),
        url.Pattern, url.QueryString, RegexOptions.None | RegexOptions.IgnoreCase);
        //這里你可以輸出一下看看
        //context.Response.Write(url.Page + "<br>" + newUrl+"<br>");
        //開始把用戶便于記憶的URL替換成程序能讀懂的url
        context.RewritePath(url.Page, string.Empty, newUrl);
        }
        }
        }
        }
        public class SiteUrls
        {
        //定義成volatitle類型主要是為了多線程訪問方便,在這個示例程序中沒什么實際意義,項目大了就有用了
        private static volatile SiteUrls instance = null;
        string UrlsFile = HttpContext.Current.Server.MapPath("/config/urls.config");
        //定義兩個屬性
        private System.Collections.ArrayList _Urls;
        public System.Collections.ArrayList Urls
        {
        get { return _Urls; }
        set { _Urls = value; }
        }
        //這個就是個鍵植對 表害怕一點也不高深
        private System.Collections.Specialized.NameValueCollection _Paths;
        public System.Collections.Specialized.NameValueCollection Paths
        {
        get { return _Paths; }
        set { _Paths = value; }
        }
        //構(gòu)造函數(shù)
        private SiteUrls()
        {
        Urls = new System.Collections.ArrayList();
        Paths = new System.Collections.Specialized.NameValueCollection();
        //以XML個數(shù)讀取那CONFIG文件
        XmlDocument urlconfig = new XmlDocument();
        urlconfig.Load(UrlsFile);
        XmlNode root = urlconfig.SelectSingleNode("urls");
        foreach (XmlNode n in root.ChildNodes)
        {
        //XmlNodeType.Comment如果不是注釋
        if (n.NodeType != XmlNodeType.Comment && n.Name.ToLower() == "rewrite")
        {
        XmlAttribute name = n.Attributes["name"];
        XmlAttribute path = n.Attributes["path"];
        XmlAttribute page = n.Attributes["page"];
        XmlAttribute querystring = n.Attributes["querystring"];
        XmlAttribute pattern = n.Attributes["pattern"];

        if (name != null && path != null && page != null
        && querystring != null && pattern != null)
        {
        Paths.Add(name.Value, path.Value);
        //壓進去的都是url實體類
        Urls.Add(new URLRewrite(name.Value, pattern.Value, page.Value.Replace("^", "&"),
        querystring.Value.Replace("^", "&")));
        }
        }
        }
        }
        //用方法實例化
        public static SiteUrls GetSiteUrls()
        {
        if (instance == null)
        {
        instance = new SiteUrls();
        }
        return instance;
        }

        #region url實體類
        public class URLRewrite
        {
        #region 成員變量
        private string _Name;
        public string Name
        {
        get { return _Name; }
        set { _Name = value; }
        }

        private string _Pattern;
        public string Pattern
        {
        get { return _Pattern; }
        set { _Pattern = value; }
        }

        private string _Page;
        public string Page
        {
        get { return _Page; }
        set { _Page = value; }
        }

        private string _QueryString;
        public string QueryString
        {
        get { return _QueryString; }
        set { _QueryString = value; }
        }
        #endregion
        #region 構(gòu)造函數(shù)
        public URLRewrite(string name, string pattern, string page, string querystring)
        {
        _Name = name;
        _Pattern = pattern;
        _Page = page;
        _QueryString = querystring;
        }
        #endregion
        }
        #endregion
        }
        }

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        asp.net 不用組件的URL重寫(適用于較大型項目)

        asp.net 不用組件的URL重寫(適用于較大型項目):先在網(wǎng)站根目錄下建立一個config文件夾,再在此文件架下建立一個urls.config文件,這里記錄url的配置信息代碼如下: 代碼如下:<xml version=1.0 encoding=utf-8> <urls> <rewrite name=default pa
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 在线免费观看中文字幕| 四虎影视久久久免费观看| 亚洲精品美女久久久久| 小草在线看片免费人成视久网| 亚洲色大成网站www久久九| 亚洲乱码一区二区三区国产精品| 久久精品国产亚洲av水果派| 亚洲精品国产成人99久久| 亚洲码和欧洲码一码二码三码| 亚洲娇小性xxxx| fc2成年免费共享视频18| 香港一级毛片免费看| 精品免费视在线观看| 51午夜精品免费视频| 久久久青草青青国产亚洲免观| 热久久精品免费视频| 亚洲三区在线观看无套内射| 亚洲AV无码成人专区| 日本亚洲欧美色视频在线播放 | 成人毛片100免费观看| 日韩在线视频免费| 亚洲精品免费网站| 国产成人精品曰本亚洲79ren| 精品国产香蕉伊思人在线在线亚洲一区二区 | 亚洲午夜av影院| 亚洲妇女熟BBW| 免费少妇a级毛片人成网| 久久精品国产精品亚洲下载| 国产成人自产拍免费视频| 亚洲丝袜美腿视频| 免费看的黄色大片| 成人一区二区免费视频| 亚洲人成综合在线播放| 日本免费一区二区三区四区五六区| 久久不见久久见免费视频7| 成人毛片18女人毛片免费96| 久久国产亚洲观看| 国内精品免费久久影院| 亚洲中文字幕在线观看| 国产免费人成视频尤勿视频| 久久精品无码专区免费东京热|