亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > .NET > 正文

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

2024-07-10 13:20:28
字體:
來源:轉載
供稿:網友
先在網站根目錄下建立一個config文件夾,再在此文件架下建立一個urls.config文件,這里記錄url的配置信息代碼如下:

復制代碼 代碼如下:


<?xml version="1.0" encoding="utf-8"?>
<urls>
<rewrite
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"/>
</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"/>
</modules>
</system.webServer>
</configuration>


本來只寫一個

復制代碼 代碼如下:


<httpModules>
<add type="my.Forum.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></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("http://www.49028c.com/")),
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
}
}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品∨欧美精品v日韩精品| 97在线观看免费高清| 亚洲性视频网站| 精品中文字幕在线| 国产成人啪精品视频免费网| 亚洲综合第一页| 91国在线精品国内播放| 国产日韩欧美自拍| 欧美精品在线看| 欧美黄色免费网站| 97人人模人人爽人人喊中文字| 久久久天堂国产精品女人| 欧美放荡办公室videos4k| 久久国产精品偷| 国产拍精品一二三| 中文字幕在线亚洲| 久久久黄色av| 亚洲精品欧美日韩| 久久香蕉国产线看观看av| 日韩福利伦理影院免费| 亚洲国产成人91精品| 91精品久久久久久久久久入口| 亚洲一区二区三区乱码aⅴ| 国产精品久久激情| 国产精品69精品一区二区三区| 欧美日韩亚洲系列| 亚洲成人精品视频| 日韩av在线免费观看一区| 欧美中文字幕在线播放| 国产va免费精品高清在线观看| 日韩在线欧美在线| 中文字幕在线观看日韩| 国产精品一久久香蕉国产线看观看| 中文字幕少妇一区二区三区| 综合av色偷偷网| 一区二区成人av| 日韩精品免费视频| 日韩av电影在线网| 欧美在线一级视频| 国产亚洲欧美日韩一区二区| 国产精品视频自在线| 中文字幕日韩免费视频| 欧美性猛交99久久久久99按摩| 26uuu亚洲伊人春色| 午夜精品国产精品大乳美女| 亚洲国产精品成人一区二区| 亚洲成人性视频| 久久影院免费观看| 欧美日韩激情视频| 69久久夜色精品国产7777| y97精品国产97久久久久久| 日韩国产欧美精品一区二区三区| 九九热视频这里只有精品| 中文亚洲视频在线| 国产精品久久久久久中文字| 国产一区二区香蕉| 日韩电影在线观看中文字幕| 欧美激情精品久久久久久蜜臀| 日韩精品在线视频美女| 亚洲在线观看视频| 狠狠躁夜夜躁人人爽天天天天97| 热re91久久精品国99热蜜臀| 久久久爽爽爽美女图片| 成人97在线观看视频| 青青青国产精品一区二区| 欧美老少配视频| 国产精品爱啪在线线免费观看| 久久在线免费视频| 欧美电影电视剧在线观看| 日韩欧美国产成人| 色噜噜狠狠狠综合曰曰曰88av| 自拍亚洲一区欧美另类| 日韩一级黄色av| 另类少妇人与禽zozz0性伦| 国产精品欧美日韩| 蜜臀久久99精品久久久无需会员| 久久精品一本久久99精品| 欧美日韩国产第一页| 国产亚洲精品一区二区| 中文字幕亚洲情99在线| 亚洲精品国产suv| 日本久久久久久| 亚洲91精品在线观看| 97超级碰碰碰| 国产精品久久久久久久久久三级| 热久久美女精品天天吊色| 欧美疯狂性受xxxxx另类| 亚洲国产成人久久综合| 国产精品国产三级国产专播精品人| 日韩av免费看| 亚洲精品有码在线| 亚洲激情小视频| 国产精品入口日韩视频大尺度| 国产精品美腿一区在线看| 亚洲精品福利免费在线观看| 久久网福利资源网站| 久久久久久久久久久免费| 亚洲第一级黄色片| 久久99热这里只有精品国产| 国产经典一区二区| 狠狠色狠狠色综合日日小说| 久久久国产精品视频| 日韩三级成人av网| 亚洲国产又黄又爽女人高潮的| 国产香蕉一区二区三区在线视频| 色综合久久悠悠| 成人黄色片网站| 国产精品自在线| 福利视频一区二区| 欧美日韩国产激情| 韩曰欧美视频免费观看| 丝袜情趣国产精品| 国产亚洲免费的视频看| 久久久天堂国产精品女人| 成人精品久久一区二区三区| 欧美大片在线看免费观看| 亚洲第一区在线| 51ⅴ精品国产91久久久久久| 2019精品视频| 综合欧美国产视频二区| 成人免费福利视频| 国产精品久久久久久av下载红粉| 91精品国产高清| 国产一区二区三区视频免费| 亚洲第一av网站| 中文字幕一区日韩电影| 中文亚洲视频在线| 久久99亚洲热视| 91影视免费在线观看| 亚洲黄色在线观看| 岛国av在线不卡| 国产精品免费电影| 欧美大尺度在线观看| 亚洲春色另类小说| 国产日韩在线一区| 久久亚洲精品成人| 91精品久久久久久久久久久久久| 国产激情久久久| 国语对白做受69| 日韩在线精品视频| 亚洲第一色在线| 久久精品国产99国产精品澳门| 2019亚洲男人天堂| 亚洲肉体裸体xxxx137| 欧美丰满少妇xxxxx做受| 日韩成人在线播放| 久久精品国产亚洲精品| 欧美片一区二区三区| 在线观看久久av| 中文字幕国产亚洲| 亚洲片在线资源| 95av在线视频| 国产啪精品视频| 国产性猛交xxxx免费看久久| 日本一欧美一欧美一亚洲视频| 亚洲自拍欧美色图| 欧美成人精品h版在线观看| 欧美激情一区二区三区高清视频| 国产69精品99久久久久久宅男| 深夜福利国产精品| 中文字幕国产日韩| 亚洲国产精彩中文乱码av| 欧美另类在线观看| 亚洲在线一区二区|