如何在类库项目类型中使用 ConfigurationManager 类

Posted

技术标签:

【中文标题】如何在类库项目类型中使用 ConfigurationManager 类【英文标题】:How to use ConfigurationManager Class in a Class Library Project type 【发布时间】:2011-12-22 14:02:48 【问题描述】:

我有一个用于付款的类库项目。客户端的实时凭证在网站的 web.config 文件中,这个类库项目将以 dll 的形式添加到 bin 中。那么如何在类库中获取 ConfigurationManager 以便我可以获取客户凭证并进行付款

【问题讨论】:

【参考方案1】:

将引用 System.Web 添加到您的类库。

【讨论】:

【参考方案2】:

我遇到了同样的问题,我假设您想使用 ConfigurationManager 访问配置文件中的某些属性。

另一种方法是将设置文件添加到项目中。这就是我在项目中所做的:

    右键单击项目名称,转到菜单上的“属性”链接。 点击左侧选项卡上的设置链接 如果您尚未生成 VS,将为您提供创建链接。 创建后,您可以为所需的属性添加键值对。 VS 将在您的项目中包含一个 settings.settings 文件,该文件将包含您在设置文件中添加的属性(假设您使用 C#,您应该在 Settings.Designer.cs 下看到它们) 然后您可以通过 [ProjectNamespace].Properties.Settigns.Default.[PropertyName] 在项目的类中访问这些设置

【讨论】:

这个问题是,如果您要将它紧密耦合到一个应用程序,那么拥有一个可移植的单独类库有什么意义。【参考方案3】:

如果您可以将该类移出类库会更好,但如果您不能或不想这样做,那么您可以使用 System.Configuration。

1) 添加对 System.Configuration 的引用。

2) 使用 ConfigurationManager 代替 WebConfigurationManager;代码几乎相同,只需将 WebConfigurationManager 替换为 ConfigurationManager。

【讨论】:

【参考方案4】:

一般而言,库中的类不应直接读取 web.config 并在构造函数中进行设置。

但是在某些情况下库可以直接读取 web.config 是可以接受的。为此,您可以定义 custom configuration section 或使用 WebConfigurationManager.AppSettings

您需要添加对 System.Web 程序集的引用,并且需要在要使用配置管理器的文件中包含命名空间 System.Web.Configuration。

【讨论】:

请您为此编写一些代码,因为我从您的链接中获得了代码,但 WebconfigurationManager 仍然没有显示在工作室的智能中 @Muhammad - 你能详细说明这个评论吗? > 为什么会这样?我认为在架构上这没问题,因为类库是在 Web 应用程序宿主的上下文中加载的。 如果你对你的类进行单元测试,你将没有 web.config 来提供它,而且库通常是可重用的实用程序,不应与它们运行的​​平台或上下文相关联, 除非您有一个仅用于基于 Web 的应用程序的特定库,在这种情况下,您可以定义自己的配置部分,因为配置属于应用程序而不是库。【参考方案5】:

将您的类库配置设置移动到 web.config。

【讨论】:

以上是关于如何在类库项目类型中使用 ConfigurationManager 类的主要内容,如果未能解决你的问题,请参考以下文章

仅在类库输出类型中未找到 Microsoft.WITDataStore32.dll 异常

在类库项目中添加 WCF 服务引用,并在使用该类库的网站中添加相同的 WCF 引用。

无法在类库应用程序中使用 WCF 服务 [重复]

在类库中创建 UserManager

在类库中使用 API 接口,在 API 接口中使用类库? [关闭]

如何在类库中使用重定向(url)方法?