我们有一个新的 ASP.NET Core 2.0 应用程序但我们需要使用.NET Framework 4.6.1库,该库需要访问Web.config(或类似版本)中定义的Custom ConfigSection 。初始尝试会导致错误,指示内部组件无法加载/查找该部分。这在非核心应用程序中运行良好,我们希望有一种方法可以在Core中实现这一功能。
以下是在配置文件中注册的示例。
<configSections>
<section name="data-connector" type="Connector.Configuration.ConnectorConfigSection, Connector" />
</configSections>
如果有帮助,组件将使用以下代码加载其配置部分。
/// <summary>
/// Loads an instance of a specified configuration section or a default instance if one was not found
/// </summary>
/// <typeparam name="T">The Configuration Section type to be loaded</typeparam>
/// <param name="sectionName">The name/path of the section to be loaded as seen in the config file</param>
public static T GetSectionInstance<T>(string sectionName) where T : ConfigurationSection
{
if (string.IsNullOrEmpty(sectionName)) throw new ArgumentNullException("sectionName");
var instance = (ConfigurationSection)ConfigurationManager.GetSection(sectionName);
return (instance == null || !typeof(T).IsAssignableFrom(instance.GetType()))
? Activator.CreateInstance<T>()
: instance as T;
}
我们可以要求组件所有者对其加载过程进行更改,但我们无法将其作为本机核心组件。
是否有解决办法来确保仍然支持web.config部分?
答案 0 :(得分:2)
如果您在.NET Framework上使用ASP.NET Core 2.0,那么您将需要使用app.config而不是web.config。
答案 1 :(得分:0)
您可以在Startup.ConfigureServices
中使用DI容器添加配置或其部分,并将其注入控制器或服务中,将使用您的库。
答案 2 :(得分:0)
Just create an App.config like below. Working in ASP.NET Core.
<configuration>
<configSections>
<section name="EmailConfig" type="MyApp.Handler,MyApp">
</configSections>
<EmailConfig to = "to@test.com" from="from@test.com"
subject="test" body ="" />
</configuration>