我有一个 ASP.NET 应用程序,其中包含许多用于本地化用户控件和页面的 .resx(资源)文件。
我们希望这些文件可以即时编辑。
但是,我们注意到在 Web 服务器上编辑这些文件会导致应用程序域重新加载,这会导致服务器在应用程序域重新启动时减速约一分钟。
有没有办法允许编辑这些文件而不导致应用程序域重新启动?
我有一个 ASP.NET 应用程序,其中包含许多用于本地化用户控件和页面的 .resx(资源)文件。
我们希望这些文件可以即时编辑。
但是,我们注意到在 Web 服务器上编辑这些文件会导致应用程序域重新加载,这会导致服务器在应用程序域重新启动时减速约一分钟。
有没有办法允许编辑这些文件而不导致应用程序域重新启动?
这个问题在 Stackoverflow 上有多种形式;重复答案,是的,这绝对是可能的。
与 .NET 的大部分内容一样,资源提供程序是可扩展的。
我认为内置资源提供程序(将 .resx 编译为 .resources)对于以 Web 为中心的部署来说是一种不幸的不匹配。
如果您的设置主要是字符串,您可以插入一个简单的UpdatableResXResourceProvider,它使用内置的ResXResourceReader从现有的 *.resx 文件中读取。
结果缓存在应用程序缓存中。
不会生成任何程序集——更新会立即被读取,就像使用任何其他基于文件的CacheDependency 一样——可以在运行时应用任意数量的更新。
唯一需要注意的是,如果您不想禁用内置 FCN,则必须将 *.resx 文件移动到受保护的App_Data文件夹(通过构建后步骤轻松完成)。
您可以在此处下载UpdatableResXResourceProvider: http ://www.onpreinit.com/2009/06/updatable-aspnet-resx-resource-provider.html
这篇博文应该可以帮助你。我怀疑它是这样的:
重新编译的次数(aspx、ascx 或 asax)超过 machine.config 或 web.config 中的设置指定的限制(默认设置为 15)