国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面

來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:42:39
文檔

ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面

ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面:要解決這個(gè)問(wèn)題,我們需要先了解ASP.NET應(yīng)用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問(wèn)應(yīng)用程序時(shí),每次的單個(gè)頁(yè)面URL訪問(wèn)時(shí),都會(huì)先經(jīng)過(guò)HttpApplication 管線處理請(qǐng)求,走過(guò)BeginRequest 事件之后才
推薦度:
導(dǎo)讀ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面:要解決這個(gè)問(wèn)題,我們需要先了解ASP.NET應(yīng)用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問(wèn)應(yīng)用程序時(shí),每次的單個(gè)頁(yè)面URL訪問(wèn)時(shí),都會(huì)先經(jīng)過(guò)HttpApplication 管線處理請(qǐng)求,走過(guò)BeginRequest 事件之后才

要解決這個(gè)問(wèn)題,我們需要先了解ASP.NET應(yīng)用程序的生命周期,先看下面作者整理的一張圖片:

ASP.NET生命周期 (2)

從圖中我們可以清楚的看到:通用IIS訪問(wèn)應(yīng)用程序時(shí),每次的單個(gè)頁(yè)面URL訪問(wèn)時(shí),都會(huì)先經(jīng)過(guò)HttpApplication 管線處理請(qǐng)求,走過(guò)BeginRequest 事件之后才會(huì)去走路由訪問(wèn)具體的Controller和Action,最后結(jié)束的時(shí)候會(huì)請(qǐng)求EndRequest事件。下面用一張圖來(lái)表示這個(gè)順序:

image

注意圖中標(biāo)示的紅色部分就是我們要實(shí)現(xiàn)的部分,實(shí)現(xiàn)如下:
1 新建MyHandler.cs
代碼如下:


public class MyHandler:IHttpModule
{
public void Init(HttpApplication application)
{
application.BeginRequest +=
(new EventHandler(this.Application_BeginRequest));
application.EndRequest +=
(new EventHandler(this.Application_EndRequest));
}
private void Application_BeginRequest(Object source,
EventArgs e)
{
// Create HttpApplication and HttpContext objects to access
// request and response properties.
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string filePath = context.Request.FilePath;
string fileExtension =
VirtualPathUtility.GetExtension(filePath);
if (fileExtension.Equals(".html"))
{
context.Response.WriteFile(context.Server.MapPath(filePath));//直接走靜態(tài)頁(yè)面
//此處可以加入緩存,條件也可以根據(jù)需要來(lái)自己定義
context.Response.End();
}
}
private void Application_EndRequest(Object source, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string filePath = context.Request.FilePath;
string fileExtension =
VirtualPathUtility.GetExtension(filePath);
if (fileExtension.Equals(".html"))
{
context.Response.Write("<hr><h1><font color=red>" +
"HelloWorldModule: End of Request</font></h1>");
}
}
public void Dispose() { }
}

2. web.config中加入以下代碼,才會(huì)運(yùn)行自定義的管道處理類
代碼如下:

<httpModules>
<add name="MvcTest.MyHandler" type="MvcTest.MyHandler"/>
</httpModules>

運(yùn)行一下自己的代碼,看看效果你就全明白了!
補(bǔ)充:根據(jù)@小尾魚的提示,如果直接在自己的項(xiàng)目文件下生產(chǎn)了和URL中一樣的目錄文件,比如訪問(wèn):yourdomin.com/product/1.html,你的項(xiàng)目文件夾下真的存在product/1.html這個(gè)路徑,那么IIS會(huì)直接去請(qǐng)求這個(gè)靜態(tài)頁(yè)面,如果項(xiàng)目中使用了自定義的管道處理程序,那么這個(gè)靜態(tài)頁(yè)仍然會(huì)走我們的自定義管道處理程序,我們可以在這里通過(guò)緩存來(lái)實(shí)現(xiàn)要不要重新成長(zhǎng)靜態(tài)頁(yè)或刪除過(guò)期產(chǎn)品的靜態(tài)頁(yè),如果不使用此方法,只能去寫執(zhí)行計(jì)劃,定時(shí)跑這些靜態(tài)文件了,修改Application_BeginRequest
代碼如下:

private void Application_BeginRequest(Object source,
EventArgs e)
{
// Create HttpApplication and HttpContext objects to access
// request and response properties.
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
string filePath = context.Request.FilePath;
string fileExtension =
VirtualPathUtility.GetExtension(filePath);
if (fileExtension.Equals(".html"))
{
//判斷緩存是否存在,不存在加入緩存,調(diào)用生成靜態(tài)的類和方法
//產(chǎn)品過(guò)期,移除靜態(tài)文件,302重定向
if (System.IO.File.Exists(context.Server.MapPath(filePath)))
{
context.Response.WriteFile(context.Server.MapPath(filePath));
context.Response.End();
}
}

思路大體如此。

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

文檔

ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面

ASP.NET MVC3關(guān)于生成純靜態(tài)后如何不再走路由直接訪問(wèn)靜態(tài)頁(yè)面:要解決這個(gè)問(wèn)題,我們需要先了解ASP.NET應(yīng)用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問(wèn)應(yīng)用程序時(shí),每次的單個(gè)頁(yè)面URL訪問(wèn)時(shí),都會(huì)先經(jīng)過(guò)HttpApplication 管線處理請(qǐng)求,走過(guò)BeginRequest 事件之后才
推薦度:
標(biāo)簽: 如何 靜態(tài) 路由
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 伊人伊成久久人综合网777 | 久久国产午夜一区二区福利 | 日韩欧美在线观看视频 | 中文字幕版免费电影网站 | a一区二区三区视频 | 国产成人综合久久综合 | 图片专区亚洲 欧美 另类 | 婷婷久久五月天 | 久久国内精品 | 国产成人高清一区二区私人 | 亚洲免费网站 | 在线观看欧美日韩 | 日韩在线观看一区 | 欧美野外多人交3 | 欧美人禽杂交狂配 | 91久久精品国产91性色tv | 国产欧美精品一区二区三区四区 | 久久午夜影院 | 久久精品国内一区二区三区 | 成人免费大片a毛片 | 精品亚洲一区二区 | 一级一级特黄女人精品毛片视频 | 国产成人亚洲综合 | 久久精品视频一区二区三区 | 国产码欧美日韩高清综合一区 | 91香蕉国产亚洲一区二区三区 | 国产一区二区三区高清 | 亚洲美女网站 | 久久精品福利视频 | 久久精品国产精品亚洲综合 | 亚洲欧美影视 | 精品视频第一页 | 亚洲女同一区二区 | 久久精品无遮挡一级毛片 | 97精品国产91久久久久久 | 亚洲欧美在线观看视频 | 日本欧美另类 | 国产欧美久久一区二区 | 在线视频观看国产 | 久久久久亚洲 | 国产欧美一区二区精品性色 |