我正在构建一个Asp.Net Core 3.1项目,该项目将引用一些旧的.Net Framework API。这些API是为了从调用应用程序托管的web.config文件中获取配置值而构建的。到目前为止,所有的调用应用程序都是.Net Framework应用程序,并且包含web.config文件。新项目是.Net Core。我该如何向.Net Core项目添加web.config文件,以便API可以访问它?我尝试只是将具有正确应用程序设置值的web.config添加到解决方案中。但没有起作用。
我正在构建一个Asp.Net Core 3.1项目,该项目将引用一些旧的.Net Framework API。这些API是为了从调用应用程序托管的web.config文件中获取配置值而构建的。到目前为止,所有的调用应用程序都是.Net Framework应用程序,并且包含web.config文件。新项目是.Net Core。我该如何向.Net Core项目添加web.config文件,以便API可以访问它?我尝试只是将具有正确应用程序设置值的web.config添加到解决方案中。但没有起作用。
我只需要添加一个带有一些键的app.config文件,并安装System.Configuration.ConfigurationManager作为NuGet包。这是链接: https://www.itnota.com/use-system-configuration-configurationmanager-dot-net-core/
ASP.NET Core 用 appsettings.json
替换了 web.config
文件。如果需要读取配置的API与项目相同,那么只需在 API 控制器构造函数中添加 IConfiguration
依赖项并直接从中提取值即可。
例如: SomeApiController.cs
public class SomeApiController : Controller
{
private readonly IConfiguration _config;
public SomeApiController (IConfiguration configuration)
{
_config = configuration;
}
public IActionResult SomeEndpoint()
{
var connectionString = _config.GetConnectionString("DefaultConnection");
return connectionString;
}
}
或者,如果你确实非常需要一个 web.config 文件,那么我建议使用 XML 解析器直接读取该文件。有一篇几年前的教程介绍了这个方法,但我暂时找不到它。
System.Web.Configuration
到Microsoft.Extensions.Configuration
,与你的说法有很大的区别。web.config是唯一的选择,而appsettings.json只是无限多种选项之一(包括文件、数据库、环境变量、HTTP调用等等)。此外,注入IConfiguration
是一个不好的做法。 - Camilo Terevinto由于您的项目,即您控制的代码,不会使用web.config文件,您只需添加它并确保它被复制到输出目录中。以下是详细说明这几个步骤的帖子: https://mitchelsellers.com/blog/article/using-a-web-config-file-with-asp-net-core。
如果您还可以修改这些旧的API,则应尝试解耦对web.config文件的依赖,以便您不必为其单独配置。