【问题标题】:WebConfigurationManager or HttpContext.Application?WebConfigurationManager 还是 HttpContext.Application?
【发布时间】:2012-10-10 13:05:02
【问题描述】:

我是 C#、.net 等的初学者,我正在使用 MVC Web 应用程序。

我在 Global.asax.cs 的 Application_Start() 中看到了一些示例,人们使用 Application.Add("prop", "value") 来存储来自 Web.config 的值。

然后我们可以在控制器中通过HttpContext.Application["prop"]访问它。

使用有区别吗

HttpContext.Application["prop"]

并使用

WebConfigurationManager["prop"]

?

我认为在这个页面中:http://msdn.microsoft.com/en-us/library/system.web.configuration.webconfigurationmanager.aspx 建议使用WebConfigurationManager 用于Web 应用程序,但他们不谈论HttpContext.Application

非常感谢!

【问题讨论】:

    标签: c# asp.net-mvc configuration httpcontext


    【解决方案1】:

    两者的目的不同

    HttpContext.Application 代表HttpApplicationState,您可以将其视为一组应用程序级全局变量。它存储在内存中,不会持久化到磁盘,因此如果重新启动工作进程,它就会丢失。

    另一方面,WebConfigurationManager 用于访问 Web.Config 文件。它存储在磁盘上,并在应用程序池回收时持久化。

    对于您描述的特定情况,我想有人可能认为将 Web.Config 中的属性加载到内存中并从内存中访问它们会带来性能优势,尽管我不相信会有这么多的性能将获得好处。

    【讨论】:

      【解决方案2】:

      当您使用 HttpApplicationState 存储和检索值时,不会写入 web.config 文件 - 实际上,它很可能已经为该请求加载。您所做的是将其存储在某种形式的缓存中,该缓存与应用程序的生命周期一样长。

      使用配置管理器,当调用Save 时,它将写入(该实例的)底层配置文件。

      基本上,这些是不同的东西,尽管它们对您(用户)来说似乎以相同的方式起作用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 2012-11-18
        • 2010-10-16
        • 1970-01-01
        • 2011-04-27
        相关资源
        最近更新 更多