从单独的类库访问web.config?

Ste*_*ens 14 c# model-view-controller class

我正在寻找一种实现以下目标的好方法:

我有一个Web应用程序(MVC 3),它有一个单独的类库,其中包含我正在制作的CMS的后端逻辑.此CMS使用NHibernate连接到数据库.我希望用户能够在他们的web.config文件中配置连接字符串(最终甚至是数据库的味道).

我正在寻找的是从web.config文件获取连接字符串的好方法,即使DLL是完全独立的.这可能吗?我是否必须以某种方式将我的连接字符串传递给我的类库?或者我可以在应用程序运行时访问它吗?

如果我必须在我的Web应用程序中创建一些代码以将连接字符串传递给我的类库,我怎样才能使这段代码尽可能便携,所以我不必再为我的下一个webapp写它?

非常感谢您的任何想法.

Ode*_*ded 19

您可以从网站将连接字符串传递给类库中的类.

这是一个比尝试直接从配置文件中获取信息更好的选择,否则您将依赖于使用正确的密钥存在的配置文件(使测试类更难).

有关直接访问配置的参数,请参阅此博客文章(这是非常常见的,但不是最佳实践).


Bra*_*don 11

您可以System.Configuration.ConfigurationManager从类库中访问.这将使您可以访问AppSettings和ConnectionStrings.

  • 馊主意.配置是一个依赖项,应该直接传入.http://www.devtrends.co.uk/blog/configuration-settings-are-a-dependency-that-should-be-injected (4认同)
  • @Oded - 实现一个接口并不比向app.config添加项目更麻烦.它还绕过了.net配置管理器中内置的几个安全功能,例如加密连接字符串的能力以及应用程序无法修改web.config的事实.更不用说使用您的库的每个人都必须学习一种新的配置方式,而不是使用行业标准. (4认同)
  • @CharlesLambert - 这不是关于_hassle_.它是关于具有静态依赖性. (2认同)