.net 如何从我的类库应用程序访问自定义配置?

.net 如何从我的类库应用程序访问自定义配置?,.net,asp.net,configuration,web-config,.net,Asp.net,Configuration,Web Config,我在我的基础设施项目中有一个自定义配置,但是当我的应用程序启动时,只有我的web.config被识别 我不想将此自定义配置文件的配置放在我的web.config中,因为此配置负责基础结构层 如何从web项目中的另一个项目使用此自定义配置?类似以下内容: var exeMap = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\Path\To\Your\File"}; Configuration myConfig = Configurat

我在我的基础设施项目中有一个自定义配置,但是当我的应用程序启动时,只有我的web.config被识别

我不想将此自定义配置文件的配置放在我的web.config中,因为此配置负责基础结构层

如何从web项目中的另一个项目使用此自定义配置?

类似以下内容:

var exeMap = new ExeConfigurationFileMap {ExeConfigFilename = @"C:\Path\To\Your\File"};
Configuration myConfig = ConfigurationManager.OpenMappedExeConfiguration(
    exeMap, ConfigurationUserLevel.None
);

假设基础设施项目是一个类库,您是否考虑过创建属性以向前端公开app.config(?)设置

这是我的意思的一个例子。请记住,这只是一个例子。它是一个演示如何通过属性公开配置值的属性。在您的情况下,该属性将从自定义配置文件中检索一个值

public string GetConfigurationValue(string Key)
{
    return GetValueFromConfiguration(Key);
}

我想知道的一件事是,为什么要创建一个自定义配置文件,而不仅仅是创建一个可以集成到app.config文件中的配置部分。看起来你让事情变得比实际需要困难得多

前面对这个问题的回答没有告诉您一个关键点

.NET旨在为每个
AppDomain
提供一个单独的配置过程。所有类库都将使用调用它们的应用程序的配置文件。在您的情况下,类库将使用web.config。如果您的类库是从控制台应用程序使用的,那么它将使用application.exe.config文件


仔细想想,这是唯一有意义的事情。如果您的类库是从两个独立的应用程序使用的,那么它将有两个独立的配置。必须代表调用应用程序管理这些配置。

存在另一种更简单的方法吗?当然,您可以使用
方法,但是您只能使用另一个文件的相对路径。这通常用于组织应用程序设置和配置字符串。我知道这种方法,但我也不想使用它们。我经常看到其他库(如log4net)的自定义配置文件,我不知道它们是如何使用的。nHibernate也使用这种设置,但他们编写了自己的配置框架。你有什么样的基础设施配置是web应用程序不应该知道的?@Harper是关于用户将保存在应用程序中的文件路径的设置;好的-这是内部应用程序配置,但不是真正的“基础设施”。对我来说,这听起来像是web.config中的东西。不过,我通常会为类似的内容创建一个自定义配置部分,这样您就不会得到各种疯狂的appSettings密钥。web.config是一个配置文件,所有层都可以访问它。它驻留在“UI”项目中的事实是一个实现细节,而不是它是什么的声明。确定。在Visual Studio解决方案中,web.config(或app.config)文件位于UI项目中。由于现有的VS构建过程,您可能不会改变这一点。但是,配置文件是针对应用程序的,而不是针对应用程序的任何特定逻辑层。您可以调整构建过程,使特定的配置信息存储在一个单独的文件中,该文件可以从最终的web.config中引用,而不作为其一部分,或者(在2010年),您可以创建构建过程用于自定义配置的web.config转换。这些只是详细信息,不是app.config,而是自定义配置。是的,要创建自定义配置,我需要创建一个从ConfigurationSection派生的类。您的意思是直接从类获取值,而不是从配置文件获取值?不,我的意思是创建从配置文件检索值的公共属性,以便使用库的web应用程序可以使用这些属性访问配置值。-1:您的示例为什么使用
WebConfiguration Manager
?这将限制代码只能从ASP.NET调用。我非常清楚地指出,这是一个示例,对于他的实现来说,这将是不同的。它旨在演示通过属性公开配置值的概念。真的很惊讶你会投反对票。我觉得你没有读我的答案。我读了评论,我知道他的具体例子,但我觉得当有人在这个答案中寻找配置文件信息时,你的例子给出了错误的想法。看看我的情况,我需要一个自定义配置文件来设置保存文件的路径。Web.config位于UI层,您确定吗?如果您的类库是从网页调用的,那么是的,它需要位于Web.config中。这不是层次的问题。它与层无关。它与需要修改哪个文件以更改配置有关。NET使配置更加容易,因为每个应用程序需要一个文件,而不是像.ini文件或注册表那样每个组件需要一个文件。您有一个源,比如说.NET设计为每个AppDomain都有一个单独的配置过程?请参阅:应用程序配置文件的名称和位置取决于应用程序的主机,该主机可以是以下主机之一