2

我有一个 ASP.Net 应用程序,其中来自 Web.Config xml 的 AppSettings 节点存储在一个单独的文件中。

所以我的 Web.Config 包含这个:

<appSettings file="AppSettings.config" />

每当我更改其中的设置时,我都必须执行 iisreset 以强制更改生效。换句话说,我在此文件中的更改不会像对 Web.Config 的更改一样被检测到。

有谁知道我如何使这些更改自动生效,就像使用 Web.Config 一样?

谢谢!

4

6 回答 6

3

编辑:回应其他答案。您可以更改 machine.config 以包含 appSettings 的 restartOnExternalChanges="true" 选项;但是,当您触摸任何外部应用程序设置文件时,这将导致您的所有 Web 应用程序重新启动。(另外,我认为这可能只在您使用 configSource="file.name" 而不是 file="file.name" 时才有效。)

这是设计使然,导致应用程序重置的唯一方法是手动或通过脚本。

您可以在这里查看一个脚本,该脚本将在不重新启动 iis 的情况下重置您的应用程序:

http://weblogs.asp.net/jgalloway/archive/2006/06/01/Avoid-IISRESET-in-ASP.NET-applications-_2800_added-bonus_3A00_-ASPRESET_2900_.aspx

于 2009-05-14T16:13:03.490 回答
3

我知道这是一个旧线程,但要添加一些东西。

如果您使用:

<appSettings file="AppSettings.config" />

然后,在对 web.config 进行更改或执行重新启动之前,对外部文件的更改将不可用。

但是,如果您将其更改为:

<appSettings configSource="AppSettings.config" />

对这些设置的更改可以立即在您的代码中使用,而无需重新启动或更改 web.config。

我刚刚通过可重复测试验证了这种情况。

于 2012-01-25T17:16:05.187 回答
2

在记事本中打开 web.config。保存。退出记事本。

于 2009-05-14T16:09:14.327 回答
2

您如何在代码中访问您的应用设置?我有一个外部 appsettings 文件(尽管我使用configSource属性而不是),并且在使用代码获取值file时,我所做的任何更改都可以立即使用。ConfigurationManager.AppSettings("settingname")

话虽如此,如果您确实出于其他原因需要重新启动应用程序,并且您可以访问服务器上的 machine.config 文件,则在 appSettings 部分的定义中,有一个名为的属性RestartOnExternalChanges可以设置为 true (默认为 false),然后我相信 appSettings 部分的行为会像您希望的那样。

于 2009-05-14T16:42:35.480 回答
1

您可以编写一个filewatcher服务来监控您的自定义配置文件。当更改的事件在服务内执行时发出 iisrest 命令。

于 2009-05-14T16:11:41.030 回答
0

如果您要改用ConfigurationRedirection(在 IIS 7 中引入),则可以将 IIS 配置为轮询外部配置文件的更改(从 IIS 7.5 开始)。不过,这将涵盖整个 .config 文件,而不仅仅是 appSettings 部分。

这允许您将配置设置存储在 Web 场中的所有 Web 服务器计算机都可以访问的 UNC 服务器上。

于 2011-11-21T17:42:06.770 回答