簡體   English   中英

如何在第一頁加載中而不是在每個頁面請求中讀取和解析XML文件一次

[英]How to read and parse an XML file only once on first page load instead of on each page request

我一定不太了解。 我創建了一個像這樣的靜態類:

public static class oDs
{
    public static DataSet columnsxml
    {
        get
        {
            DataSet oDs = new DataSet();
            oDs.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/Columns.xml"));
            return oDs;
        }

    }
}

在Page_Load類中使用如下所示:

foreach (DataRow row in oDs.columnsxml.Tables[0].AsEnumerable())
{
    MyCode()
}

我的期望是,由於我將類oDs設置為靜態,因此不會在每個頁面請求上都繼續讀取XML文件,但是事實證明這是錯誤的。 如果在運行時對XML進行更改,則下一頁請求將具有更新的信息。 我對此感到擔心。 我還必須在靜態類中執行MyCode()嗎?

編輯:我知道企業庫,但寧願不進行緩存。

一切都取決於您的目標。 如果文件的內容是靜態的,這意味着它在應用程序生命周期中沒有更改,那么您可以通過以下方式對靜態類進行一些更改:

public static class oDs
{
    private static DataSet _oDs;

    public static DataSet columnsxml
    {
        get
        {
            if (_oDs == null)
            {
                _oDs = new DataSet();
                _oDs.ReadXml(HttpContext.Current.Server.MapPath("~/App_Data/Columns.xml"));
            }
            return _oDs;
        }

    }
}

請注意,此代碼不是安全的,因此您可能需要在其中添加鎖。

另一個選擇是使用Global.asax中的Application_Start事件在應用程序啟動時加載文件內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM