我在一个单独的类库项目中有一个Web项目(mvc)和数据访问层。我需要访问位于该库项目中的app.config中的连接字符串。
ConfigurationManager.ConnectionStrings [0] .ConnectionString拉出一些奇怪的东西。我在库的配置和web项目的配置文件中都没有这种设置。
App.config看起来像这样:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="DALConnectionString" connectionString="User ID=sa;Password=pass;Initial Catalog=db;Data Source=srv\SQL2005;" />
</connectionStrings>
</configuration>
答案 0 :(得分:6)
在这种情况下,您的图书馆应使用dependency injection作为inversion of control。
您的数据访问层(DAL)库中的类应将连接字符串视为constructor argument
或property value
。
这将确保您的DAL也可用于其他项目,并且与您的mvc Web应用程序无关。
让使用DAL的代码从配置文件中读取连接字符串并将其注入到类的构造函数中。
答案 1 :(得分:5)
默认情况下,类库无法访问配置文件。
类库的客户端(在本例中是您的Web项目)可以提供配置设置。
因此,将所有相关设置(连接字符串)放在Web的配置文件中。类库中的ConfigurationManager
代码将使用Web项目配置设置。
答案 2 :(得分:0)
你应该在web.config中添加上面显示的片段,然后在运行时配置管理器即使在你的类库中运行也会使用它。
答案 3 :(得分:0)
您无法访问DLL的app.config。
app.config
仅适用于入口点程序集或web.config
适用于Web项目。
尝试将连接复制到入口点配置或通过解析配置XML来加载配置 - 不推荐。