我正在为许多其他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尽可能。
任何帮助将不胜感激......
答案 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简单地创建指向现有文件的链接,而不是将其复制到项目中。然后,任何更改都将自动传播到链接到该文件的任何项目。