【问题标题】:ASP.NET and VB.NET config filesASP.NET 和 VB.NET 配置文件
【发布时间】:2012-07-13 15:28:28
【问题描述】:

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

ASP.NET 应用程序使用 System.Web.Configuration 命名空间,而 VB.NET 应用程序使用 System.Configuration 命名空间。我注意到它们继承自 Object 类。我希望它们都继承自一个公共类,以便我可以使用多态性在 DLL 中创建适当类型的实例。

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

2012 年 7 月 13 日更新 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

【问题讨论】:

    标签: asp.net vb.net web-config app-config


    【解决方案1】:

    我建议将参数从托管应用程序传递给您的 DLL 函数,并从 dll 中完全删除配置文件依赖项。

    【讨论】:

    • 谢谢。我已经根据您的回答用潜在的解决方案更新了这个问题。你会这样处理它吗?
    • 配置文件包含类使用的其他设置,例如导入语句。
    • 我会再次从 dll 中删除所有配置文件依赖项。 DLL 意味着无需配置。应用程序是状态/配置管理器,应该将所有需要的参数传递给 dll。我会在 dll 中创建一个名为 Settings 的公共类,并在我的对象的 ctor 中获取其中一个(或作为静态方法的参数......)。依赖于配置的 dll 是可用性的噩梦。
    【解决方案2】:

    在这种情况下,对我们有用的是我们将条目放入 using:

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

    然后我们使用:

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

    这对两个配置文件都是通用的。

    【讨论】:

    • 谢谢。我可以使用 System.Configuration 读取配置设置。我正在尝试确定在无 Web 应用程序(即 VB.NET)中使用 System.Configuration 而不是 System.Web.Configuration 是否是不好的做法。
    • 我刚刚经历过这个 - System.Configuration 很好。但为了您的使用,请仅访问配置文件中对两者通用的部分。
    • 谢谢。如果 web.config 中有与 ASP.NET 应用程序中的其他类(包括 DLL 文件中的类)相关的导入语句,会发生什么情况?它们与 VB.NET 应用程序无关。
    • 只要配置文件中的内容不违反架构,您可以将任何您想要的内容放在那里。每个程序只读取它关心的项目。
    猜你喜欢
    • 2011-12-19
    • 2011-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-23
    相关资源
    最近更新 更多