C# 将非web.config文件作为配置对象打开
所以我的情况是,我有一个asp.net MVC项目,我希望将大多数特定于站点的设置移动到一个配置文件中,而不是Web.config。这样做的原因是为了避免在更改设置时应用程序池被循环使用,但我想保留我已有的许多配置代码。因此,我一直在试图找到一种方法,将配置文件作为配置对象加载,而不是与应用程序一起加载的标准Web.config。我一直在浏览一些Configuration manager类以加载配置文件,但它们似乎都需要一个路径,该类可以找到机器、web或应用程序配置。那么,是否可以将.config文件(不是web、应用程序或计算机)作为配置对象加载?看起来应该很简单,因为它只是XML,但我似乎缺少了一些东西。配置更改会导致应用程序域重新启动 更改Web.config文件中的配置设置会间接导致应用程序域重新启动。这种行为是设计造成的。您可以选择使用configSource属性引用在进行更改时不会导致重新启动的外部配置文件。有关更多信息,请参见章节元素继承的常规属性中的configSource。 在web.config中:C# 将非web.config文件作为配置对象打开,c#,.net,asp.net-mvc-3,config,C#,.net,Asp.net Mvc 3,Config,所以我的情况是,我有一个asp.net MVC项目,我希望将大多数特定于站点的设置移动到一个配置文件中,而不是Web.config。这样做的原因是为了避免在更改设置时应用程序池被循环使用,但我想保留我已有的许多配置代码。因此,我一直在试图找到一种方法,将配置文件作为配置对象加载,而不是与应用程序一起加载的标准Web.config。我一直在浏览一些Configuration manager类以加载配置文件,但它们似乎都需要一个路径,该类可以找到机器、web或应用程序配置。那么,是否可以将.conf
<system.net>
<myconfigSection>
<myConfigEntry configSource="MyExtraConfig.config" />
</myconfigSection>
</system.net>
在MyExtraConfig.config中:
<?xml version="1.0" encoding="utf-8" ?>
<myConfigEntry>
<myConfigValue1 a="1" b="2" c="3" />
<myConfigValue2 d="4" e="5" f="6""/>
</myConfigEntry>
我认为,这是一个有点不同的问题,但毫无疑问,在SOFI的某个地方有答案。我已经看到了这个问题的答案所描述的方法。我不确定它是否适合我的情况。可能是这样,但我可能只是误解了语法。我的配置文件就在文件结构中的Web.config旁边,但这些方法似乎用于从其他源加载外部配置。我想不出一种方法,只将.config作为.NET中的一个配置对象。有趣的是,我将进一步研究。我已经用这种方式设置了特定于站点的配置信息,但是我相信我在进行更改时仍然体验过应用程序池回收的行为。可能默认行为是外部更改时刷新,因此可能我需要显式将其设置为false,尽管.NET阻止我在任何有configSource的地方应用该参数,因此可能我的设置不正确。因此,是的,此信息是正确的。我设置它的方式是让它在我没有意识到的情况下重新启动。对于可能有此问题的任何其他人编辑配置,我需要通过管理器打开文件并将其转换到我的ConfigurationSection类,通过setter进行更改,然后保存管理器返回的配置对象。