[英]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.