2012-09-21 60 views
9

web.configmachine.config和有什么不一样?web.config和machine.config之间的区别?

我已阅读: -

的web.config文件中指定的配置设置特定 Web应用程序,并且都位于应用程序的根目录下; machine.config文件指定所有 Web服务器上的网站的配置设置,并且位于 $ WINDOWSDIR $ \ Microsoft.Net \ Framework \ Version \ Config中。

有什么我失踪或任何其他技术方面?我想知道更多关于这两个文件。

回答

13

每个CLR版本都有一个machine.config文件以及一个额外的web.config文件,我将其称为“机器级别web.config文件”。

此外,正如您所注意到的,每个Web应用程序也有一个web.config文件。 Web应用程序中的目录也可以有web.config文件。

现在,关键是配置文件相互继承。这意味着,Web应用程序将读取machine.config文件和机器级别web.config文件(针对其给定的框架版本)中定义的设置以及其自己的web.config文件。

定义machine.config中的东西的常见用例是在服务器上的许多应用程序之间共享值,例如连接字符串或SMTP服务器设置等。

+2

很好的答案,但我有一点修正:它不是“每个.NET Framework”,而是每个CLR版本。 (e.x.net fx 3.0没有自己的CLR,因此没有新的machine.config用于.net fw) – Tamir

4

这些是一些最重要的细节;尽管实际上,machine.config不仅仅是ASP.NET自身的配置。还有另一个文件,你应该看看,哪个(我认为)与machine.config位于同一位置;那就是'根'web.config,它位于machine.config和特定于站点的web.config文件之间,当然,这是特定于ASP.NET的。

在IIS管理控制台的服务器级别更改的某些设置在根web.config中执行。

请注意,此层次结构是per-.NET版本; (2.0有一个; 4.0有自己的)

另一个注意事项:你可以在目录和/或子应用程序中有子web.config文件离开站点的根目录,这进一步修改了“基础”。

最后,需要注意的是:并不是所有的设置都可以在子级别的web.config文件中重写。有可能(并且有些是默认情况下)锁定此处所述层次结构的任何级别的某些设置。

2

machine.config是系统中的最终主配置文件,具有很多默认设置。当您使用web.config文件(按照级联顺序完成)时,实际上是使用新文件覆盖这些设置。

3

让我清楚一点: - 在ASP.NET中有 ,有一个配置文件的层次结构,而machine.config文件位于根 的意思机器上。配置文件包含应用于您创建的每个Web应用程序的配置设置。它存在于Windows/Microsoft .NET Framework/[版本]/config中 您将在同一物理路径中找到一个web.config文件(我将其命名为A)。此web.config文件从machine.config继承配置设置。现在你有你的应用程序文件夹,你有web.config(在根级别)。此web.config(我将它命名为B)从A继承配置设置。如果在应用程序文件夹的子目录中具有web.config而不是子目录,则web.config继承B的配置设置,并且梯子如何关闭