Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将非web.config文件作为配置对象打开_C#_.net_Asp.net Mvc 3_Config - Fatal编程技术网

C# 将非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

所以我的情况是,我有一个asp.net MVC项目,我希望将大多数特定于站点的设置移动到一个配置文件中,而不是Web.config。这样做的原因是为了避免在更改设置时应用程序池被循环使用,但我想保留我已有的许多配置代码。因此,我一直在试图找到一种方法,将配置文件作为配置对象加载,而不是与应用程序一起加载的标准Web.config。我一直在浏览一些Configuration manager类以加载配置文件,但它们似乎都需要一个路径,该类可以找到机器、web或应用程序配置。那么,是否可以将.config文件(不是web、应用程序或计算机)作为配置对象加载?看起来应该很简单,因为它只是XML,但我似乎缺少了一些东西。

配置更改会导致应用程序域重新启动

更改Web.config文件中的配置设置会间接导致应用程序域重新启动。这种行为是设计造成的。您可以选择使用configSource属性引用在进行更改时不会导致重新启动的外部配置文件。有关更多信息,请参见章节元素继承的常规属性中的configSource。

在web.config中:

<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进行更改,然后保存管理器返回的配置对象。