C# System.configuration web.config和app.config

C# System.configuration web.config和app.config,c#,asp.net,system.configuration,C#,Asp.net,System.configuration,使用第三方dll时,我遇到以下异常: 不在独立exe中运行时,必须指定exePath 有以下痕迹 System.Configuration.ConfigurationManager.openexeconfigurationmpl(ConfigurationFileMap fileMap,Boolean-isMachine,configurationuserleveluserlevel,String-execpath) 我发现的原因是它正在寻找app.config,我在web.config中提供了

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

不在独立exe中运行时,必须指定exePath

有以下痕迹

System.Configuration.ConfigurationManager.openexeconfigurationmpl(ConfigurationFileMap fileMap,Boolean-isMachine,configurationuserleveluserlevel,String-execpath)


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

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

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

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


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

可执行文件:

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

Web应用程序/网站:

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


幸运的是,只有一个web项目可以从一个目录托管,所以这里只有一个主配置文件。这允许按照约定选择主配置文件名,并且该文件名恰好是
web.config

+1,我在下面的回答中添加了关于为什么部分的想法。