Asp.net core 根据调用的Web应用程序从特定文件Web.config或appsettings.json读取配置

Asp.net core 根据调用的Web应用程序从特定文件Web.config或appsettings.json读取配置,asp.net-core,configuration,.net-core,Asp.net Core,Configuration,.net Core,我有一个monolith项目,我正在尝试将一个Web应用程序从ASP.NET转换为具有完整框架的ASP.NET核心。 如图所示,两个Web应用程序都引用类库3。CL3包含业务逻辑,但也包含关于如何读取特定配置的逻辑(到目前为止是从Web.config文件) 由于ASP.NET Core(基于appsettings.json环境)中读取配置的方式已经改变,因此我必须重写从CL3读取配置的部分 有可能出现这样的情况吗 #IF CALLED FROM ASP.NET RETRIEVE CONF

我有一个monolith项目,我正在尝试将一个Web应用程序从ASP.NET转换为具有完整框架的ASP.NET核心。 如图所示,两个Web应用程序都引用类库3。CL3包含业务逻辑,但也包含关于如何读取特定配置的逻辑(到目前为止是从Web.config文件)

由于ASP.NET Core(基于appsettings.json环境)中读取配置的方式已经改变,因此我必须重写从CL3读取配置的部分

有可能出现这样的情况吗

#IF CALLED FROM ASP.NET
    RETRIEVE CONFIGURATION FROM WEB.CONFIG
#ELSE (CALLED FROM ASP.NET CORE FULL FRAMEWORK)
    RETRIEVE CONFIGURATION FROM APPSETTINGS.JSON

如果您正在重构,请尝试将配置读取从共享DLL中移出,并提供一个干净的抽象,该抽象对特定于框架的资产没有隐藏的依赖关系

您的ASP.NET核心应用程序和经典ASP.NET应用程序可以基于其配置系统创建配置(您可以提供两种不同的配置实现),然后使用CL3的类并传入配置对象


或者,您可以使用
ConfigurationBuilder
从AppSettings.json和AppSettings.{Environment}.json读取AppSettings和连接字符串,并通过经典的
ConfigurationManager
API使其可用。有关如何执行此操作的详细信息,请参阅。这可以扩展到从json文件配置自定义配置节(classic.NET)。

如果要重构,请尝试将配置读取从共享DLL中移出,并提供一个干净的抽象,该抽象对特定于框架的资产没有隐藏的依赖关系

您的ASP.NET核心应用程序和经典ASP.NET应用程序可以基于其配置系统创建配置(您可以提供两种不同的配置实现),然后使用CL3的类并传入配置对象


或者,您可以使用
ConfigurationBuilder
从AppSettings.json和AppSettings.{Environment}.json读取AppSettings和连接字符串,并通过经典的
ConfigurationManager
API使其可用。有关如何执行此操作的详细信息,请参阅。这可以扩展到从json文件配置自定义配置部分(classic.NET)。

首先感谢您的回答。关于您的博客文章,例如,工作人员角色使用RoleEnvironment.GetConfigurationSettingValue而不是ConfigurationManager.AppSettings访问设置。另外,当我们想要覆盖WCF服务的端点时会发生什么?Web.config有一个端点,而Web.Preproduction.config有另一个端点(appSettings部分中没有)。你认为这可以通过你博客中描述的方法来克服吗?我不认为经典的WCF端点应该通过appsettings.json文件进行配置,这种方法只对从asp.net core和classic ConfigurationManager访问的配置值的交集有用。如果配置或API特定于经典的.NET Framework设置。如果ASP.NET核心应用程序在.NET Framework上运行,您仍然可以从中访问经典.config配置。使用博客文章中的方法,从clasic ASP.NET应用程序中,您可以使用ConfigurationManager访问appSettings/ConnectionString。在ASP.NET核心应用程序中也可以这样做吗?如果是,如何将AppSettingsJsonConfigurationBuilder注册为配置的默认生成器?ASP.NET Framework上的ASP.NET Core还可以使用App.config文件将配置放入,这是您要注册配置的位置。由于ASP.NET核心托管模型涉及将应用程序作为子进程启动(目前),因此它不会获得web.config配置,但应该从app.config读取,以确保我们指向相同的方向。如果我们有一个带有appsettings.json的干净的ASP.NET核心完整框架应用程序,ConfigurationManager.appsettings可以毫无问题地从中读取吗?我不希望App.config发挥作用。只需ASP.NET核心完整框架中的apsettings.json。首先感谢您的回答。关于您的博客文章,例如,工作人员角色使用RoleEnvironment.GetConfigurationSettingValue而不是ConfigurationManager.AppSettings访问设置。另外,当我们想要覆盖WCF服务的端点时会发生什么?Web.config有一个端点,而Web.Preproduction.config有另一个端点(appSettings部分中没有)。你认为这可以通过你博客中描述的方法来克服吗?我不认为经典的WCF端点应该通过appsettings.json文件进行配置,这种方法只对从asp.net core和classic ConfigurationManager访问的配置值的交集有用。如果配置或API特定于经典的.NET Framework设置。如果ASP.NET核心应用程序在.NET Framework上运行,您仍然可以从中访问经典.config配置。使用博客文章中的方法,从clasic ASP.NET应用程序中,您可以使用ConfigurationManager访问appSettings/ConnectionString。在ASP.NET核心应用程序中也可以这样做吗?如果是,如何将AppSettingsJsonConfigurationBuilder注册为配置的默认生成器?ASP.NET Framework上的ASP.NET Core还可以使用App.config文件将配置放入,这是您要注册配置的位置。由于ASP.NET核心托管模型涉及将应用程序作为子进程启动(目前),因此它不会获得web.config配置,但应该从app.config读取,以确保我们指向相同的方向。如果我们有一个带有appsettings.json的干净的ASP.NET核心完整框架应用程序,ConfigurationManager.appsettings可以毫无问题地从中读取吗?我不希望App.config发挥作用。只需ASP.NET核心完整框架中的apsettings.json。