我们目前在 Azure 上托管的 C# Blazor 服务器应用程序中使用资源文件 (resx)。缺点是,当我们添加或进行更改时,我们必须重新部署,从而重新启动我们的网络应用程序。
我们如何使资源文件动态化,以便它们可以在运行时更改,以及检索的最佳存储方法是什么,例如Azure 存储上保存的数据库 (SQL/NoSQL) 或平面文件。
var supportedCultures = new[] { "EN", "FI", "PL", "SV", "CY" };
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);
app.UseRequestLocalization(localizationOptions);
这取决于 resx 文件的使用方式。如果它们是编译为 dll 的项目的一部分,则可能无法解决此问题。您需要针对 resx 文件中的每个更改重新部署。
如果应用程序以某种方式将它们用作原始文件,那么您可以用新文件覆盖旧文件,但如果它们仅在启动时加载到内存中一次,则无论如何您都需要重新启动应用程序。
解决您问题的一个方法是将您的应用程序重新设计为两部分:主应用程序和资源应用程序。主应用程序可以从资源应用程序中检索资源,并在启动时将它们加载到内存中。
每次资源应用程序启动时,它都可以尝试将更新的资源发送到主应用程序。
然后您可以在每次 resx 时重新部署资源应用程序。文件更改。