• <fieldset id="8imwq"><menu id="8imwq"></menu></fieldset>
  • <bdo id="8imwq"><input id="8imwq"></input></bdo>
    最新文章專題視頻專題問答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重寫(適用于較大型項目)

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

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

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

    先在網站根目錄下建立一個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>

    我這里只寫了一種規則,然后修改網站的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
    節。對早期版本的 IIS 來說則不需要此節。
    -->
    <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>
    /// 實現接口的Init方法
    /// </summary>
    /// <param name="context"></param>
    public void Init(HttpApplication context)
    {
    //建立個委托讓他執行下面的ReUrl_BeginRequest事件
    context.BeginRequest += new EventHandler(ReUrl_BeginRequest);
    }
    /// <summary>
    /// 實現接口的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是下面的一個類,這里大家可以重構下
    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; }
    }
    //構造函數
    private SiteUrls()
    {
    Urls = new System.Collections.ArrayList();
    Paths = new System.Collections.Specialized.NameValueCollection();
    //以XML個數讀取那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 構造函數
    public URLRewrite(string name, string pattern, string page, string querystring)
    {
    _Name = name;
    _Pattern = pattern;
    _Page = page;
    _QueryString = querystring;
    }
    #endregion
    }
    #endregion
    }
    }

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

    文檔

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

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

    最新推薦

    猜你喜歡

    熱門推薦

    專題
    Top
    主站蜘蛛池模板: 91久久精品91久久性色| 亚洲人成亚洲精品| 91亚洲精品麻豆| 色久综合网精品一区二区| 国产精品自在线拍国产第一页| 精品国产第一国产综合精品| 久久性精品| 亚洲精品天天影视综合网| 国产精品日本一区二区在线播放| 日韩经典精品无码一区| 国产成人亚洲精品91专区手机| 国产国产成人精品久久| 亚洲av无码乱码国产精品fc2| 久久精品国产亚洲精品| 国产精品成人h片在线| 国产成人精品视频在放| 久久99精品久久久久婷婷| 亚洲精品乱码久久久久久按摩 | 国产精品成人观看视频| 精品国产福利久久久| 99久久er这里只有精品18| 国内精品伊人久久久久AV影院| 日韩精品无码一区二区三区免费 | 国产欧美日本亚洲精品一5| 欧美日韩精品一区二区在线播放| 国产精品区一区二区三在线播放 | 午夜精品久久久久久中宇| 伊人精品视频在线| 亚洲国产精品丝袜在线观看| 久热精品视频第一页| 麻豆精品视频在线观看| 免费精品国产自产拍在线观看| 久久久国产精品| 老司机午夜网站国内精品久久久久久久久 | 久久er国产精品免费观看2| 99精品高清视频一区二区| 1000部精品久久久久久久久| 99精品视频在线| 四虎影视国产精品亚洲精品hd| 国产成人AV无码精品| 精品多毛少妇人妻AV免费久久|