我们有很多网站都有非常相似的web.config文件。
您可以将重复配置集中在每个网站的根目录之前的1个配置文件中吗?或者是唯一的选项machine.config?
我们希望在GAC中集中一个程序集引用。
结构:
答案 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放在主网站中以获得您提及的结构。