System.configuration web.config和app.config

时间:2010-01-15 11:33:17

标签: c# asp.net system.configuration

在使用第三方dll时,我遇到以下异常:

  不在独立的exe内部运行时必须指定

的exePath

以下跟踪

  

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap,Boolean isMachine,ConfigurationUserLevel userLevel,String exePath)。

我找到的原因是它正在寻找app.config并且我已经在web.config中提供了详细信息。我的问题是:为什么system.configuration会区分web.config和app.config?有什么想法吗?

2 个答案:

答案 0 :(得分:7)

<强>可执行文件:

多个.NET可执行文件可以存在于同一目录中。由于同一目录中不能有两个具有相同名称的文件,因此应用程序必须为其主配置文件使用不同的名称。 applicationName.exe.config方案解决了这个问题。

网络应用程序/网站:

.NET Web应用程序被编译为DLL,并且网站通常是及时编译的。因此,在这些类型的项目中没有“主要切入点”。可以创建一个Web项目,其中每个页面都编译为自己的程序集。哪一个是主要组件?我们应该在哪个程序集中命名配置文件?

幸运的是,只能从一个目录托管一个Web项目,因此这里只有一个主要配置文件。这允许按惯例选择主配置文件名,并且该文件名恰好是web.config

答案 1 :(得分:6)

web.config仅适用于您的网站和网络应用程序。它保持固定,即不改名;它总是被称为web.config

app.config适用于非Web应用程序 - Winforms,WPF,NT服务等。在您构建项目时,这将重命名为YourApplicationName.exe.config。您将永远不会在应用程序的目录中找到该名称的app.config(或者如果您这样做,它将不会被使用)。

为什么微软选择使用两种不同的名称 - 我不知道 - 请问微软。

所以你基本上只需知道你正在处理什么,并在正确的地方提供信息。