2012-07-13 53 views
1

我想在ASP.NET应用程序和VB.NET(Forms)应用程序之间共享DLL。客户端应用程序使用配置文件来存储设置,例如连接字符串,ASP.NET应用程序也是如此。ASP.NET和VB.NET配置文件

ASP.NET应用程序使用System.Web.Configuration命名空间,而VB.NET应用程序使用System.Configuration命名空间。我注意到它们从Object类继承而来。我期待他们都从一个普通的类继承,以便我可以使用Polymorphism在DLL中创建适当类型的实例。

在ASP.NET和VB.NET应用程序共享的DLL中使用配置文件的最佳做法是什么?我研究了这一点,并且我在某处读到了你应该在ASP.NET应用程序中使用System.Configuration,并且我在其他地方读了你不应该这样做,因为如果你在ASP中使用System.Configuration,你不能写入web.config .NET应用程序。我不需要写入web.config;我需要阅读它。最佳做法是什么?

更新13/07/2012 该DLL包含一个类。该班目前有一个构造函数,它看起来是这样的:

private connectionString As Sub 
Public Sub New() 
connectionString = WebConfigurationManager.ConnectionStrings("TestConnection").ConnectionString 
End Sub 

现在我想在课堂上创造另一个构造函数没有Web客户端调用即:

private connectionString As Sub 
Public Sub New() 
connectionString = connectionString2 
End Sub 

回答

3

我建议传球在托管应用程序的DLL函数的参数中,并从DLL完全删除配置文件的依赖关系。

+0

谢谢。根据你的回答,我已经用可能的解决方案更新了这个问题。这是你如何接近它? – w0051977 2012-07-13 19:02:56

+0

配置文件包含该类使用的其他设置,例如进口报表。 – w0051977 2012-07-13 19:27:36

+0

我会再次从DLL中删除所有配置文件的依赖关系。动态链接库意味着无配置。应用程序是状态/配置管理器,并应将所有必需的参数传递给dll。我会在dll中创建一个名为'Settings'的公共类,并将其中的一个放在我的对象的ctor中(或者作为静态方法的参数...)。配置依赖dll是一个可用性的噩梦。 – 2012-07-13 21:01:18

1

了什么在这种情况下行之有效对我们来说是我们把条目中使用:

<configuration> 
    <appSettings> 
    <add key="AccessServer" value="\\apollo\all_access_anon\northwind.mdb" /> 
    ... 

然后我们访问它使用:

NameValueCollection appSettings = ConfigurationManager.AppSettings; 
string str = appSettings["AccessServer"]; 

这就是常见的两种配置文件。

+0

谢谢。我能够使用System.Configuration读取配置设置。我正试图确定在非Web应用程序(如VB.NET)中使用System.Configuration而不是System.Web.Configuration是否是不好的做法。 – w0051977 2012-07-13 19:04:46

+0

我之前经历过这个 - System.Configuration很好。但为了您的使用,只能访问配置文件中通用的那些部分。 – 2012-07-13 20:44:54

+0

谢谢。如果在web.config中有与ASP.NET应用程序中的其他类(包括DLL文件中的类)相关的导入语句,那么会发生什么呢?它们与VB.NET应用程序无关。 – w0051977 2012-07-13 21:05:35