我有要求,最終用戶可以更改本地化資源,並且應用程序中可以看到更改,而無需重新啓動應用程序。ASP.NET本地化:在不重新啓動應用程序的情況下更改資源?
更新澄清情景:
我說的是在運行時更改了本地化資源。可以說我在頁面的德語翻譯中有一個錯字。然後,一些管理員用戶應該有可能在運行時更改該錯字。應該不需要重新部署或重新啓動,以便將此更改反映到UI中。
我正在使用ASP.NET MVC3。
我有什麼選擇?
我一直在尋找編寫從數據庫加載資源的custom ResourceProvider。
這似乎不是太大的力氣,不過到目前爲止,我指出了兩個缺點:
- 它不與在MVC3用於方便的驗證DataAnnotations工作(DataAnnotations用ErrorMessageResourceType參數,工作只使用編譯資源)
- 我們基本上必須提供我們自己的工具來管理資源(如翻譯等),這很遺憾,因爲有很多工具可以與resx-files一起工作。
還有什麼其他的選擇?運行時部署的resx文件是否可以被選中?
但我懷疑應用程序在檢測到這些更改時會自動「重新啓動」:我懷疑ASP.NET意識到resx文件已更改,然後它將回收應用程序池並編譯新的resx文件飛。
這是正確的嗎?有沒有辦法解決?
我還沒有看過在部署之前將資源編譯成附屬程序集。這甚至是Web應用程序推薦的場景嗎?
但即使對於已編譯的附屬程序集,我懷疑ASP.NET會重新啓動應用程序,這些程序集在運行時會發生更改。它是否正確?
我會對如何滿足原始需求感興趣嗎? 我會對我上面提到的選項有任何意見。
你有沒有嘗試UpdatableResXResourceProvider中提出的[這個答案](http://stackoverflow.com/questions/1535027/app-domain-restarts-when-resx-file-changes-any-way-to-avoid-this/1853530#1853530)? –
對不起,我想知道,在運行時改變現有資源我認爲你唯一的選擇是自定義資源提供者,但我沒有看到任何干淨的解決方案來解決DataAnnotations問題,而不訴諸自定義註釋。 – TheCodeKing
我有辦法做到這一點,但只有當你的資源鍵是固定的? – TheCodeKing