asp.net地址映射 的界說(shuō)是用戶訪謁 的虛擬地址 映射的現(xiàn)實(shí)文件,虛擬地址可能是靜態(tài)頁(yè)面。如理:在訪謁http://fuzhou.naoqiu.com/bus頁(yè)面, 其實(shí)訪謁的是/bus.aspx頁(yè)面。
asp.net地址映射是經(jīng)由過(guò)程 HttpModule請(qǐng)求事理來(lái)完成工作。
httpModule事理是什么?
一 個(gè)HTTP請(qǐng)求在HttpModule容器的傳遞過(guò)程中,會(huì)在某一時(shí)刻(ResolveRequestCache事務(wù))將這個(gè)HTTP請(qǐng)求傳遞給 HttpHandler容器。在這個(gè)事務(wù)之后,HttpModule容器會(huì)成立一個(gè)HttpHandler的生齒實(shí)例,可是此時(shí)并沒(méi)有將HTTP請(qǐng)求節(jié)制 權(quán)交出,而是繼續(xù)觸發(fā)AcquireRequestState事務(wù)以及PreRequestHandlerExcute事務(wù)。在 PreRequestHandlerExcute事務(wù)之后,HttpModule窗口就會(huì)將節(jié)制權(quán)且則交給HttpHandler容器,以便進(jìn)行真正的 HTTP請(qǐng)求措置工作。
而在HttpHandler容器內(nèi)部會(huì)執(zhí)行ProcessRequest體例來(lái)措置HTTP請(qǐng)求。在容器 HttpHandler措置完畢整個(gè)HTTP請(qǐng)求之后,會(huì)將節(jié)制權(quán)交還給HttpModule,HttpModule則會(huì)繼續(xù)對(duì)措置完畢的HTTP請(qǐng)求信 息流進(jìn)行層層的轉(zhuǎn)交動(dòng)作,直到返回到客戶端為止。

借用博友圖片
體味完事理后,我來(lái)完成一個(gè) 簡(jiǎn)單的地址映射,代碼如下:
首先先完成地址映射基類:
///<summary>
/// 地址重寫 /// </summary>
public abstract class BaseModuleRewriter: IHttpModule
{
/// <summary>
/// 初始化挪用 /// </summary>
/// <param name="app"></param>
public virtual void Init(HttpApplication app) {
app.BeginRequest += new EventHandler(app_BeginRequest);
}
public virtual void Dispose() { }
/// <summary>
/// 請(qǐng)求起頭 /// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected virtual void app_BeginRequest(object sender, EventArgs e)
{
HttpApplication app = sender as HttpApplication;
Rewrite(app);
}
/// <summary>
/// 操作的抽象體例 /// </summary>
/// <param name="app"></param>
protected abstract void Rewrite(HttpApplication app);
}
擔(dān)任基類,完成需要地址映射操作:
protected override void Rewrite(HttpApplication app)
{
HttpContext context = app.Context;
HttpRequest request = app.Request;
string part = Regex.Match(request.Url.ToString(), @"(?<=http://).*").Value.ToLower().Trim('/');
if (part.IndexOf("/") == -1)
{
part = Regex.Match(part, @"^w+").Value;
switch (part)
{
case "bus": context.RewritePath("/bus.aspx"); break;
case "www":
case "naoqiu": context.RewritePath("/Default.aspx"); break;
default: context.RewritePath("/Index_City.aspx"); break;
}
}
}
那么我們是否還差些什么? 是的,還差個(gè)設(shè)置裝備擺設(shè)文件的設(shè)置裝備擺設(shè)。需要改削web.config文件幾處處所,代碼如:
推薦閱讀 網(wǎng)站title的寫作是做seo優(yōu)化工作中很主要的一步,也是一名seoer的根基功。可是筆者在實(shí)踐中發(fā)現(xiàn)有良多網(wǎng)站的title其實(shí)寫的都是有問(wèn)題的,甚置突皓年夜業(yè)多年的seoer都還在犯錯(cuò)誤。本文中,筆者首先列舉網(wǎng)站title寫法>>>詳細(xì)閱讀 本文標(biāo)題:asp.net地址映射——偽靜態(tài) 地址:http://www.brh9h.cn/a/34/20120422/53492.html