Web.Config文件和位置

时间:2012-02-21 22:52:26

标签: asp.net

我们有很多网站都有非常相似的web.config文件。

您可以将重复配置集中在每个网站的根目录之前的1个配置文件中吗?或者是唯一的选项machine.config?

我们希望在GAC中集中一个程序集引用。

结构:

  • 包含目录
    • 网站1目录
    • 网站2目录
    • 网站3目录
    • 所有上述网站的Web.Config文件

2 个答案:

答案 0 :(得分:0)

除了machine.config,app / web.config和user.config级别之外,我还没有遇到继承配置文件的方法。但是您可以在所有配置节(基于ConfigurationSection)上使用configSource属性来包含公共文件,例如服务端点,客户端端点,绑定,连接字符串等。尽管VS intellisense将其标记为不受支持,但它确实有效。

<configuration>

    <system.serviceModel>
        <services configSource="Services.config" />
        <client configSource="Client.config" />
        <bindings configSource="Bindings.config" />
        <behaviors configSource="Behaviors.config" />
    </system.serviceModel>

    <pages configSource="pages.config"/>

</configuration>

配置源文件必须位于应用程序的文件夹或下面的任何文件夹中。没有上升或绝对路径。但是有一个技巧可以克服VS2010中的这个限制。您需要将现有文件添加为链接并更改其名为“复制到输出目录”的属性。这样,您的绝对路径文件将被复制到您可以在configSource中引用它的应用程序文件夹。 在以前的VS版本中,它也可以以不太优雅的方式 - 在后期构建事件中复制文件。

如果您主要关注集中WCF设置,还有另一种选择:代码内配置。这方面的巨大优势是您可以从VS获得编译时检查和重构支持。如果这听起来不是很多,我可以向你保证,在一个更大的WCF项目中,配置文件管理是一个噩梦,特别是当你需要改变一些东西时。通过这种方法,通过创建一个公共程序集来集中WCF设置也非常容易,其中定义了所有服务,端点,绑定等。缺点是您没有重新编译就无法更改WCF设置。但如果这些设置不经常改变,那么这是一个很有吸引力的选择。

答案 1 :(得分:0)

您可以使用

中的web.config
  

%SYSTEMROOT%\ Microsoft.NET \框架\&LT; VERSIONNUMBER&GT; \ CONFIG \ Web.config中

或者,如果在IIS中将Containing目录配置为主网站,然后将您的网站目录设置为应用程序,则可以将web.config放在主网站中以获得您提及的结构。

相关问题