我对如何在运行时修改 web.config appSettings 值感到困惑。例如,我有这个 appSettings 部分:
<appSettings>
<add key="productspagedesc" value="TODO: Edit this default message" />
<add key="servicespagedesc" value="TODO: Edit this default message" />
<add key="contactspagedesc" value="TODO: Edit this default message" />
<add key="aboutpagedesc" value="TODO: Edit this default message" />
<add key="homepagedesc" value="TODO: Edit this default message" />
</appSettings>
比方说,我想在运行时修改“homepagedesc”键。我尝试了 ConfigurationManager 和 WebConfigurationManager 静态类,但设置是“只读”的。如何在运行时修改 appSettings 值?
更新:
好吧,五年后我又来了。我想指出的是,经验告诉我,我们不应该将任何在运行时可编辑的配置放在 web.config 文件中,而是应该将其放在一个单独的 XML 文件中,正如下面一位用户评论的那样。这不需要对 web.config 文件进行任何编辑来重新启动应用程序,这会导致愤怒的用户给您打电话。
你需要使用WebConfigurationManager.OpenWebConfiguration()
:
例如:
Dim myConfiguration As Configuration = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("~")
myConfiguration.ConnectionStrings.ConnectionStrings("myDatabaseName").ConnectionString = txtConnectionString.Text
myConfiguration.AppSettings.Settings.Item("myKey").Value = txtmyKey.Text
myConfiguration.Save()
我想你可能还需要设置允许位置 http://msdn.microsoft.com/en-us/library/system.configuration.sectioninformation.allowlocation(VS.80).aspx在机器配置中。这是一个布尔值,指示是否可以使用该元素配置各个页面。如果“allowLocation”为 false,则无法在单个元素中进行配置。
最后,如果您在 IIS 中运行应用程序并从 Visual Studio 运行测试示例,则会有所不同。 ASP.NET 进程标识是 IIS 帐户、ASPNET 或 NETWORK SERVICES(取决于 IIS 版本)。
可能需要授予对 web.config 所在文件夹的 ASPNET 或网络服务修改访问权限。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)