什么是Machine.config,Web.config,App.config

Sur*_*Mad 1 asp.net-mvc

谁能告诉我Machine.config,Web.config,App.config有什么区别?

Dai*_*Dai 6

它们都是.NET XML配置文件,调用它们的API System.Configuration(不幸的是,它并不是最容易使用的).

machine.config设置在Windows安装(即计算机)上运行的所有.NET应用程序(相同CLR版本)的配置.该文件存储在%windir%\Microsoft.NET\Framework\%version%\CONFIG.(请注意,.NET 3.0和3.5没有自己的machine.config,因为它们使用2.0 CLR).

applicationHost.config设置IIS的配置,然后由IIS的子对象(例如网站和应用程序池)继承.此文件位于IIS'文件夹中,对于"真正的"IIS %windir%\system32\inetsrv\config,对于IIS Express,这是%programfiles%\IIS Express\AppServer.您可以在MSDN上阅读更多内容.

web.config 最初是特定于ASP.NET的,用于在每个应用程序和每个目录的基础上设置配置.

  • 某些配置项只有在应用程序作用域的根目录中的web.config文件中才会生效(IIS中的"魔术"类型的文件夹,也就是bin目录所在的位置).
  • 在IIS7.0及更高版本中,web.config文件还用于存储本地IIS配置作为替代applicationHost.config,例如,如果要将配置直接存储在文件系统中(这样您可以物理移动目录树并保留配置,而无需alter applicationHost.config - 直接或使用IIS管理器).
    • 通过使用树节点中"功能视图"中的"配置编辑器"选项,可以指示IIS管理器使用web.config而不是applicationHost.config.
  • 配置由子目录继承并且可以被覆盖(因此,如果/foo有一个web.config文件,则/foo/bar可以拥有自己的web.config来覆盖或扩展在/foo配置中定义的设置.
    • 令人困惑的是,还有一个<location>元素可以让您从父配置文件中设置和覆盖目录的子配置.

app.config不是实际的文件名(开发期间除外),并且是指桌面和控制台应用程序的EXE特定配置.配置文件与其*.exe自身位于同一文件夹中,并且与程序具有相同的名称(例如,"MyProgram.exe"将具有名为"MyProgram.config"的配置文件).在构建过程中部署配置文件时,Visual Studio将"app.config"重命名为"MyProgram.exe".App.config不适用于ASP.NET项目.