從 Active Server Page 訪問時日期/時間格式的行為不同_動易Cms教程
教程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 之外)中的功能有所不同,但它們具有一項共同的行為特征:當沒有人實際登錄系統時,區域設置在所有操作系統版本中具有相同的功能。
當有人登錄計算機時,IIS 會讀取登錄用戶的區域設置。這些設置從 HKEY_CURRENT_USER/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 的緩存日期格式具有錯誤的格式,并且將向請求該頁的其余用戶提供。
雖然區域設置在上述的各個操作系統(除 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教程:
- MAC錯誤的解決方法
- 如何屏蔽動易后臺導航里的某個功能菜單?
- 動易.NET版本留言自動選定欄目方法
- 動易SiteFactoty整合Discuz!NT3.0
- 在任意位置獲取根節點ID標簽
- 如何開啟SiteWeaver6.8的支持,反對功能
- Windows 2008安裝動易.NET系統之四----動易系統安裝篇
- Windows 2008安裝動易.NET系統之三----數據庫篇
- Windows 2008安裝動易.NET系統之二----IIS、目錄環境配置篇
- 數據庫修復,SQL Server 2005內部操作不一致的處理
- 如何安裝動易.net程序權限配置
- 為什么提示對Windows系統文件夾下的Temp目錄沒有訪問權限?
- 相關鏈接:
- 教程說明:
動易Cms教程-從 Active Server Page 訪問時日期/時間格式的行為不同。