c# - 在 asp.net web 应用程序中处理配置设置

标签 c# asp.net configuration

我有一个包含 200 多个配置设置的 Web 应用程序。这些控制着从 UI 到业务逻辑的一切。

这些应该在应用程序启动时检索还是在需要时检索?

是否应在需要时为它们注入(inject) ISettings 接口(interface)。

你有什么看法?

更新: 这些可以在应用程序中打开和关闭,因此它们存储在数据库中。有些是针对每个用户的设置,有些是应用程序范围的。现在有想法吗?

最佳答案

我会根据需要取回它。 ASP.NET 自动为您缓存此数据。它不是每次都读取文件。尝试在运行时更改您的 web.config 文件,您会发现它会终止所有 session 并有效地重置您的应用。

不要把这个复杂化。 web.config 中这些设置的目的是用于您需要访问的整个应用程序的设置。 MS 已经为您提供了访问它们的库,并且已经完成了使该过程尽可能快的工作。也许如果您有数千个设置或其他东西,您也许能够找到更好的缓存算法,但这种情况很少见。

将时间花在代码的其他部分,因为更改访问 web.config 应用程序设置的方式不会有太多收获。

更新: 如果设置是应用程序范围的,则使用 web.config。如果它们是用户特定的并存储在数据库中,则在登录时将它们存储在用户的 session 中。有人说使用 cookie 进行用户特定设置,但如果您知道用户是谁,那么最好使用 session ,因为它防止该用户的每个请求都将大 cookie 回发到服务器。

关于c# - 在 asp.net web 应用程序中处理配置设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1605001/

相关文章:

configuration - 中止 : no username supplied (see "hg help config")

c# - 根据返回类型Interface限制Web API序列化的模型数据字段

c# - 尝试将日期转换为使用 .ToShortTimeString 以仅在我的 Web Api 中获取时间 - 无法正常工作

c# - Nuget Library - 将库的 DLL 复制到当前项目的输出目录

asp.net - 如何从 IIS 内部访问 TCP 选项 header ?

相同配置上的 PhP namespace

java - 如何使用与父 bean 分离的集合数据创建 spring bean?

c# - 上传时验证大文件

c# - GMap subgurim.net 仅显示灰色框

c# - 如何使整个菜单项可单击而不是仅在 asp.net 中单击文本