在控制台和 Web 应用程序之间共享 AppSettings 和 ConnectionStrings

Posted

技术标签:

【中文标题】在控制台和 Web 应用程序之间共享 AppSettings 和 ConnectionStrings【英文标题】:Sharing AppSettings and ConnectionStrings between a console and a web app 【发布时间】:2012-10-26 22:27:18 【问题描述】:

我有一个多层 ASP.Net MVC 3 应用程序,其中不同的层需要共享一些设置,我想知道如何最好地实现这一点。

目前,我所有的 AppSettings 都在 Web.config 文件中,但我只是在我的解决方案中添加了一个新项目,以创建一个将在每晚调用的控制台应用程序购买 Windows 任务计划程序来执行日常维护任务。此控制台应用程序将使用与 Web 应用程序相同的数据库、存储库层、服务层等,并且两个应用程序应在大部分情况下共享相同的设置。我想避免在两个文件(app.config 和 web.config)中重复设置。

另外,我希望这些设置可用于服务层,它位于同一解决方案的单独项目中。

我已阅读以下帖子,但我不完全理解解决方案,我不确定这是最好的方法。

Sharing Config settings between Web App and Console App

我还阅读了该帖子链接的文章,但我认为解决方案不是很优雅。

我正在使用 VS 2010 和 EF 4.3.1。

【问题讨论】:

【参考方案1】:

如果您只是对从控制台应用程序访问 web.config 文件的 AppSettings 感兴趣,那很简单。唯一真正令人烦恼的是,由于您的控制台应用程序不会在 Web 上下文中运行,因此您必须提前知道您的站点在 IIS 中的名称。这不是您自己的应用程序的挑战。

只需使用System.Web.Configuration.WebConfigurationManager打开并访问指定站点的web.config即可。

【讨论】:

【参考方案2】:

这个想法是您可以将设置放入所有项目之间共享的公共.config 作为链接,而不是将其放入所有项目中。 this answer 中概述了该解决方案。如果您不知道将配置元素外部化到单独的文件中的可能性,也请查看configSource property on MSDN

【讨论】:

以上是关于在控制台和 Web 应用程序之间共享 AppSettings 和 ConnectionStrings的主要内容,如果未能解决你的问题,请参考以下文章

在类似 Web 应用程序之间共享 Web 层代码(控制器和 JSP)的最佳实践

在不同服务器上的 ReactJS 和 WIX Web 应用程序之间共享会话

使用 Spring Security 在 Web 应用程序和 RESTful 服务之间共享安全上下文

Tornado websockets:在进程之间共享打开的 web sockets

在 Elastic Beanstalk Web 和工作程序层之间共享数据

在 winforms 和 web 应用程序之间共享数据层和模型层的最佳方法