<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 MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面

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

        ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面

        ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面:要解決這個問題,我們需要先了解ASP.NET應用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問應用程序時,每次的單個頁面URL訪問時,都會先經過HttpApplication 管線處理請求,走過BeginRequest 事件之后才
        推薦度:
        導讀ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面:要解決這個問題,我們需要先了解ASP.NET應用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問應用程序時,每次的單個頁面URL訪問時,都會先經過HttpApplication 管線處理請求,走過BeginRequest 事件之后才

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

        ASP.NET生命周期 (2)

        從圖中我們可以清楚的看到:通用IIS訪問應用程序時,每次的單個頁面URL訪問時,都會先經過HttpApplication 管線處理請求,走過BeginRequest 事件之后才會去走路由訪問具體的Controller和Action,最后結束的時候會請求EndRequest事件。下面用一張圖來表示這個順序:

        image

        注意圖中標示的紅色部分就是我們要實現的部分,實現如下:
        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));//直接走靜態頁面
        //此處可以加入緩存,條件也可以根據需要來自己定義
        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中加入以下代碼,才會運行自定義的管道處理類
        代碼如下:

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

        運行一下自己的代碼,看看效果你就全明白了!
        補充:根據@小尾魚的提示,如果直接在自己的項目文件下生產了和URL中一樣的目錄文件,比如訪問:yourdomin.com/product/1.html,你的項目文件夾下真的存在product/1.html這個路徑,那么IIS會直接去請求這個靜態頁面,如果項目中使用了自定義的管道處理程序,那么這個靜態頁仍然會走我們的自定義管道處理程序,我們可以在這里通過緩存來實現要不要重新成長靜態頁或刪除過期產品的靜態頁,如果不使用此方法,只能去寫執行計劃,定時跑這些靜態文件了,修改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"))
        {
        //判斷緩存是否存在,不存在加入緩存,調用生成靜態的類和方法
        //產品過期,移除靜態文件,302重定向
        if (System.IO.File.Exists(context.Server.MapPath(filePath)))
        {
        context.Response.WriteFile(context.Server.MapPath(filePath));
        context.Response.End();
        }
        }

        思路大體如此。

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

        文檔

        ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面

        ASP.NET MVC3關于生成純靜態后如何不再走路由直接訪問靜態頁面:要解決這個問題,我們需要先了解ASP.NET應用程序的生命周期,先看下面作者整理的一張圖片: 從圖中我們可以清楚的看到:通用IIS訪問應用程序時,每次的單個頁面URL訪問時,都會先經過HttpApplication 管線處理請求,走過BeginRequest 事件之后才
        推薦度:
        標簽: 如何 靜態 路由
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲日本va午夜中文字幕一区| 亚洲国产人成精品| 亚洲欧洲日产国码在线观看| 久久99青青精品免费观看| 久久精品国产亚洲香蕉| 美丽的姑娘免费观看在线播放 | 国产AⅤ无码专区亚洲AV| 高清免费久久午夜精品| 亚洲福利中文字幕在线网址| 日韩在线观看视频免费| 亚洲深深色噜噜狠狠爱网站| 野花香高清视频在线观看免费| 亚洲日韩图片专区第1页| 国产精品免费观看| 亚洲AV无码之国产精品| 亚洲爽爽一区二区三区| 最近免费mv在线观看动漫| 亚洲精品高清国产麻豆专区| 免费a级毛片无码a∨蜜芽试看| 日本系列1页亚洲系列| 国产成人亚洲综合无码| 99久久免费中文字幕精品| 国产成人精品亚洲日本在线| 又粗又硬免费毛片| 久久午夜无码免费| 亚洲欧美国产国产一区二区三区| 亚洲 综合 国产 欧洲 丝袜| 无码人妻一区二区三区免费看| 最新国产成人亚洲精品影院| 亚洲日韩人妻第一页| 18以下岁毛片在免费播放| 亚洲第一综合天堂另类专| 亚洲人成网77777亚洲色| 日韩不卡免费视频| 特级毛片爽www免费版| 亚洲综合色丁香麻豆| 亚洲精品国产精品乱码不卡| h视频在线观看免费完整版| 黄色片网站在线免费观看| 亚洲综合一区二区精品导航| 国产一级做a爱免费视频|