• <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 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
    主站蜘蛛池模板: 国产精品九九久久精品女同亚洲欧美日韩综合区 | 精品精品国产欧美在线小说区 | 蜜臀AV无码国产精品色午夜麻豆 | 久久久久国产精品嫩草影院| 久久99精品国产一区二区三区| 亚洲国产精品va在线播放| 久久久久99精品成人片| 久久精品国产亚洲沈樵| 国产精品视频二区不卡| 真实国产乱子伦精品视频| 精品乱子伦一区二区三区高清免费播放| 国产精品爽黄69天堂a| 老司机67194精品线观看| 午夜福利麻豆国产精品 | 午夜不卡久久精品无码免费| 日韩精品毛片| 国产一区二区三区精品视频 | 国产精品九九九久久九九| 亚洲无码日韩精品第一页| 亚洲国产精品久久久久婷婷老年| 人妻精品久久久久中文字幕一冢本| 欧美激情精品久久久久久久九九九| 国产99久久九九精品无码| 日韩欧美精品不卡| 精品国产污污免费网站| 97久久精品无码一区二区| 久久国产热精品波多野结衣AV| 中文精品人人永久免费| 亚洲精品动漫免费二区| 亚洲av午夜成人片精品电影| 老湿亚洲永久精品ww47香蕉图片| 国产午夜精品一区二区三区小说| 成人精品一区二区久久久| 91精品国产人成网站| 在线电影国产精品| 93精91精品国产综合久久香蕉| 99精品国产福利在线观看| 成人精品一区二区三区电影黑人| 国产叼嘿久久精品久久| 精品国内自产拍在线观看 | 国内精品久久久久久不卡影院|