2010-01-15 64 views
5

虽然使用的是第三方的dll我得到以下异常:System.configuration的web.config和app.config中

exePath必须在一个独立的EXE内不运行指定

跟踪以下跟踪

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl(ConfigurationFileMap fileMap,布尔isMachine,ConfigurationUserLevel userLevel,String exePa日)。

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

回答

7

可执行文件:

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

Web应用程序/网站:

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

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

6

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

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

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

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

+1

+1,我在下面的答案中添加了关于** why **部分的想法。 – 2010-01-15 13:14:57

相关问题