OpenExeConfiguration路径问题

Har*_*rry 2 c# asp.net asp.net-mvc configuration web-config

我正在尝试从服务器加载web.config.它位于:\ server\folders\web.config

当我尝试这个:

 ConfigurationManager.OpenExeConfiguration(@"\\server\folders\web.config");
Run Code Online (Sandbox Code Playgroud)

它搜索:web.config.config并失败.

 ConfigurationManager.OpenExeConfiguration(@"\\server\folders\web");
Run Code Online (Sandbox Code Playgroud)

它失败了,因为没有文件夹\ server\folders\web \

所以我尝试了几件事,看起来路径指向的文件存在,然后它应用了.config并获取配置文件.

为了好玩,我创建了一个web.loaders文件和一个web.loaders.config文件.同

 ConfigurationManager.OpenExeConfiguration(@"\\server\folders\web.local");
Run Code Online (Sandbox Code Playgroud)

它完美地加载\ server\folders\web.local.config,但抛出没有web.local文件的异常.

所以有很多方法可以加载这个小东西,但是没有比使用temp .web文件更好的方法吗?

Ste*_*ham 8

ConfigurationManager.OpenExeConfiguration用于加载可执行文件的配置,因此实际上需要.exe文件的完整路径.配置文件应与.exe位于同一目录中,并具有扩展名.exe.config,因此它不适合加载ASP.NET网站的配置.更好的选择是使用WebConfigurationManager.OpenWebConfiguration如果您从站点内打开配置,该方法是可以的,因为它需要配置的虚拟路径,但如果您从控制台应用程序中打开它,那么您将需要查看该OpenMappedWebConfiguration方法.该文件给出了一个例子,你将如何实现这一目标.

还有一个关于Stack Overflow 的上一个问题和答案显示了如何执行此操作.