如何防止 IIS 覆蓋我在 ASP.NET 中設定的區域性?

如何防止 IIS 覆蓋我在 ASP.NET 中設定的區域性?

我有一個美國客戶希望所有時間都顯示為軍事時間,但其他一切都應該是美國文化。

在我的 global.asax 中,我正在創建美國文化的副本,並應用英國時間顯示來創建具有軍事時間的美國文化。

我這樣做的原因是我找不到一種能夠做到這一點的文化,但是如果有人知道,那就太好了。

我遇到的問題是,當我們將網站部署到 IIS(版本 6)時,一切似乎都恢復為美國文化。

尋找如何更改區域性,我在 ASP.NET 標籤 -> 編輯配置 -> 應用程式標籤中找到了設置

預設值為 af-ZA。

似乎沒有辦法阻止這種對文化的凌駕性,而且我不相信 af-ZA 是正確的?

有沒有辦法防止 IIS 覆蓋 ASP.NET 中以程式設定的區域性?

注意:在這裡詢問是因為我正在尋找伺服器端解決方案,而不是程式設計。謝謝!

答案1

這至少部分是一個編碼問題。基本上,您需要使用 System.Globalization 中的 CultureAndRegionInfoBuilder 類別建立並註冊新區域性。

註冊後,您可以在 ASP.Net 應用程式設定中選擇新的區域性。 (或在您的應用程式的 web.config 檔案中。)

以下是一些可以幫助您入門的參考資料:
http://msdn.microsoft.com/en-us/library/ms172469.aspx
http://msdn.microsoft.com/en-us/library/system.globalization.cultureandregioninfobuilder.aspx

答案2

在與更精通伺服器和 asp.net 的人交談後找到了我的問題的答案

顯然你只能在 Web.config 中設定應用程式範圍的文化

我將其設定在 global.asax 中的應用程式主執行緒中,它沒有傳遞到處理頁面請求的子執行緒。

有趣的是,當透過 Visual Studio 的託管進程在本機上運行時,所有請求都必須透過同一執行緒完成。

這讓我相信這是 IIS 的問題,因為直到我們將其放在 IIS 上時才出現該問題。

我的解決方案:(接受了更合適的解決方案)

必須在每個頁面請求執行緒上設定自訂區域性。我的解決方案是將其放入母版頁載入中。 IIS 不會覆蓋您的設定。

相關內容