0

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

Application_Start()我在 Global.asax.cs中看到了一些示例,人们使用这些示例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.

非常感谢!

4

2 回答 2

1

两者有不同的目的

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

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

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

于 2012-10-10T13:13:02.410 回答
0

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

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

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

于 2012-10-10T13:09:36.727 回答