從 Active Server Page 訪問時日期/時間格式的行為不同_動易Cms教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      用戶在使用系統的過程中可能會碰到類似于下面的錯誤提示:

      日期的語法錯誤 在查詢表達式 'LastTime>#2005-6-5 下午 07:23:55#' 中。

      此問題與服務器的區域時間設置及注冊表中的讀取時間方式有關,下面轉貼微軟MSDN上關于此問題的說明。詳見:http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306044


      概要

      當您從 Active Server Page (ASP) 中使用 Now Date Time 函數時,時間和日期的格式根據模擬用戶、身份驗證用戶、登錄用戶以及服務器上操作系統版本等參數的不同而有所不同。

      備注:除非您特地模擬某一用戶,否則模擬用戶與身份驗證用戶相同。此外,登錄用戶是指登錄服務器的用戶。

      更多信息

      根據客戶要求,從系統中讀取區域設置的方式(主要是日期/時間格式)已經在操作系統的最近版本中做出更改,以便為開發人員提供對此功能的更多控制。

      雖然區域設置在上述的各個操作系統(除 Windows NT 4.0 之外)中的功能有所不同,但它們具有一項共同的行為特征:當沒有人實際登錄系統時,區域設置在所有操作系統版本中具有相同的功能。

      從 ASP 中訪問時的日期/時間格式化方式

      IIS 4.0 (Windows NT 4.0)

      當沒有人實際登錄服務器時,IIS 從系統默認設置中(尤其是從 Locale.nls 文件中)讀取日期/時間格式(和其他區域設置)。您可以在"控制面板"的"區域設置"部分更改此設置,更改之后必須重新啟動計算機。

      當有人登錄計算機時,IIS 會讀取登錄用戶的區域設置。這些設置從 HKEY_CURRENT_USER/Control Panel/International 注冊表配置單元中的用戶配置文件設置中讀取。您可以在"控制面板"的"區域設置"部分更改此設置,更改之后必須重新啟動計算機。

      IIS 5.0(Windows 2000 和 Windows 2000 Service Pack 1)

      在操作系統安裝過程中,將在系統注冊表的 HKEY_USERS/.Default/Control Panel/International 配置單元中指定并寫入區域設置選項。

      通常,當顯示日期/時間的 ASP 頁得到請求時,IIS 將首先確定注冊表中是否已加載身份驗證用戶的配置文件。假如已加載,IIS 將讀取該用戶配置文件的區域設置 ID,然后在 IIS 高速緩存中進行查找(假如此區域設置的區域設置已緩存)。假如被緩存,IIS 將用緩存的格式為請求提供服務。假如沒有在緩存值中找到該區域設置,則從 HKEY_CURRENT_USER/Control Panel/International 注冊表配置單元中該用戶的配置文件設置中讀取日期/時間格式。信息隨即被緩存,而 IIS 將顯示具有所緩存日期/時間格式的 ASP 頁。

      假如身份驗證用戶沒有用戶配置文件,IIS 將從系統默認設置中讀取區域設置 ID,然后在緩存的區域設置中查找該區域設置。假如找到緩存值,IIS 將用緩存的格式為請求提供服務;否則,IIS 將從 HKEY_USERS/.Default/Control Panel/International 注冊表配置單元中的系統默認設置中讀取該格式。信息隨即被緩存,而 IIS 將顯示具有所緩存日期/時間格式的 ASP 頁。

      但是,此邏輯存在問題。對于每一個請求,IIS 將檢查是否為結果區域設置 ID 緩存了日期/時間格式。假如 IIS 找到緩存的格式,就會使用它。假如首次瀏覽到該頁的用戶的區域設置 ID 與要用于 ASP 頁的預期區域設置 ID 相同,但它們的日期格式不同于要用于 ASP 頁的預期日期格式,則會出現問題。在這種情況下,該區域設置 ID 的緩存日期格式具有錯誤的格式,并且將向請求該頁的其余用戶提供。

      查看更多 動易Cms教程  動易Cms模板

      共3頁上一頁123下一頁
      來源:模板無憂//所屬分類:動易Cms教程/更新時間:2005-09-02
      相關動易Cms教程