相当于类库中的web.config

时间:2014-07-25 10:54:06

标签: vb.net class-library asp.net-4.5

我有三个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 文件的答案,这是不同的。

1 个答案:

答案 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();
}