我有三个Web应用程序都访问同一个数据库。那里有很多重复的代码,所以我想把所有常见的东西都移到一个新项目中,每个应用程序都可以引用它。
首先,我假设类库是用来实现这一目标的最佳方法吗? 其次,在类库中我将存储之前在 web.config 中的连接字符串设置?
在ASP.NET中,我目前正在执行以下操作:
的Web.config
<connectionStrings>
<clear/>
<add name="A" connectionString="Persist Security Info=False; User ID=user; Password=pass; Initial Catalog=myDb; Data Source=localhost; Connection Timeout=60" providerName="System.Data.SqlClient"/>
<add name="B" connectionString="Persist Security Info=False; User ID=user2; Password=pass2; Initial Catalog=myDb; Data Source=localhost; Connection Timeout=60" providerName="System.Data.SqlClient"/>
</connectionStrings>
ASP.NET页面
Dim conn as New SqlConnection(ConfigurationManager.ConnectionStrings("A").ConnectionString)
我已经搜索了一个答案,但只能找到从单独项目中访问 web.config 文件的答案,这是不同的。
答案 0 :(得分:1)
您必须添加app.config文件以进行配置。但是当从类库中读取时,必须使用位于入口点可执行项目上的app.config。
想象一下以下项目:
-ClassLibrary.dll(with)
- Class1.vb
- Class2.vb
- SettingsReader.vb
-ConsoleProgram.exe(with)
- Program.vb
- App.Config
ConsoleProgram是您必须放置appSettings的项目(在app.config中),然后您可以使用类库中的SettingsReader读取它们。
如果您真的想从dll程序集中读取设置,可以插入app.config并将该文件设置为&#34; Embedded resource&#34;,这样您就可以使用程序集读取该文件。
这样的事情:
var assembly = Assembly.GetExecutingAssembly();
var resourceName = "MyApp.App.Config";
using (Stream stream = assembly.GetManifestResourceStream(resourceName))
using (StreamReader reader = new StreamReader(stream))
{
string result = reader.ReadToEnd();
}