我的项目的Web.config可以手动从另一个Web.config继承

时间:2014-02-18 11:06:26

标签: asp.net-mvc web-config

我的设置

我正在为许多其他mvc项目创建一个基础mvc项目,其中包含所有错误处理和基本用户验证,这样我就不必在所有其他项目中复制样板代码。借助我最喜欢的依赖注入容器(go,go SimpleInjector),我能够将ErrorController放在基础项目中,并让其他项目使用它。我创建的自定义用户验证属性也是如此。

我正在使用ASP.NET MVC4,目标是.NET4.0,其布局如下:

MvcBase
+- Controllers
 +- ErrorController.cs // Common error controller
+- Filters
 +- AuthenticateUserAttribute.cs
+- Application.cs // Base class for all MVC applications
+- Web.config // Base configuration (*)

MvcProject1
+- Views
 +- Error
  +- Index.cshtml
+- Web.config

MvcProject2
+- Views
 +- Error
  +- Index.cshtml
+- Web.config

问题

我知道Web.config继承自父目录,但有没有办法明确说明基本配置文件这样的配置应该继承?在我的例子中,能够引用(*)Web.config会很棒,它与包含其他Web.config的项目位于同一层级。我的用例是我想在基本的Web.config中存储一些信息,这些信息在所有其他项目(例如错误电子邮件的配置)中是相同的,我不想在其他项目中复制以保持整体架构为DRY尽可能。

任何帮助将不胜感激......

1 个答案:

答案 0 :(得分:1)

您可以通过configSource属性实现您正在寻找的内容。您将该属性添加到web.config的某个部分,并带有另一个包含这些设置的配置文件的路径,例如:

<强>的Web.config

<connectionStrings configSource="bin/ConnectionStrings.config"></connectionStrings>

<强> ConnectionStrings.config

<connectionStrings>
    <add ... />
</connectionsStrings>

然后,你可以使用`Add ...&gt;现有文件&#34;将这些配置添加到其他项目的选项。选择要添加的配置文件后,单击&#34;添加&#34;旁边的箭头。按钮并选择&#34;添加链接&#34;代替。这将导致Visual Studio简单地创建指向现有文件的链接,而不是将其复制到项目中。然后,任何更改都将自动传播到链接到该文件的任何项目。