c# - .NET 项目中的方法的 .NET Core API 调用说它在 app.config 文件中找不到连接字符串
问题描述
我有一个 Core API 项目,它最初是从控制器访问数据库(不好的做法),所以我将数据访问方法移动到现有的 .NET 类库中,其中连接字符串存储在 app.config 文件中。相同的连接字符串也位于 Core API 项目的 appsettings.json/appsettings.development.json 文件夹中。
然后我尝试从我的 API 访问这个新的 .NET 类库方法(包含对数据库的调用),但我收到“在 app.config 中找不到 'connectionstringname'”错误。我是 .NET 的新手,但一位同事说 app.config 可能没有被拉入 API 的 bin 文件夹。有没有人遇到过 .NET Core 项目难以与 .NET 项目的连接字符串通信的问题,我该如何解决这个问题?
1.)我尝试将 app.config 文件粘贴到 API 的 bin 文件夹中,但无济于事(同样的错误。)
我在 SO 上看到了一些答案,但未能成功实施,所以如果之前已经回答过,我深表歉意。
解决方案
您需要完全抛弃对配置设置的 dot-net-framework 理解。
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/options?view=aspnetcore-5.0
注意 url 的值。
aspnet 核心 基础 配置
在 DotNet-Core 中:强烈建议创建第一类对象。(config-value-holder-poco)
并在您的 Ioc 注册中,将 config-value-holder-poco 注入 Ioc(又名 dn-core 中的“servicecollection”)。
然后构造函数注入您的设置 poco 持有人。
根据文章。
Json“部分”
"Position": {
"Title": "Editor",
"Name": "Joe Smith"
}
一流的 config-value-holder-poco。
public class PositionOptions
{
public const string Position = "Position";
public string Title { get; set; }
public string Name { get; set; }
}
国际奥委会注册。
public void ConfigureServices(IServiceCollection services)
{
services.Configure<PositionOptions>(Configuration.GetSection(
PositionOptions.Position));
}
构造函数注入:
public class Test2Model : PageModel
{
private readonly PositionOptions _options;
public Test2Model(IOptions<PositionOptions> options)
{
_options = options.Value;
}
public ContentResult OnGet()
{
return Content($"Title: {_options.Title} \n" +
$"Name: {_options.Name}");
}
}
现在您可以利用“刷新率”内置选项来了解如何处理这些选项。
https://medium.com/@kmar.ayush/eli5-ioptions-vs-ioptionssnaphot-vs-ioptionsmonitor-fab1d7e26a75
IOptions vs IOptionsSnaphot vs IOptionsMonitor
推荐阅读
- r - 这个 R 结构是什么,我如何获得索引?
- authentication - Google Analytics 设置用户 ID
- c# - 在 C# (serilog) 中,如何处理这种设计重构,其中通用接口 + 父/子关系可以以正确的方式保留?
- haskell - Haskell:使准引用值严格/在编译时评估
- laravel - 怀疑3表Eloquent之间的关系
- mysql-workbench - 如何从 Windows 10 上的 MySQL Workbench 获取忘记的 MySQL 密码?
- node.js - 如何创建 GitHub Action 以使用 Yarn 运行 Jest 测试?
- architecture - 在 Azure 数据管道中大规模使用来自外部网络的文件
- database - 我将如何与 Oracle 建立 Flutter 连接?
- sql - 添加额外 WHERE 时查询速度慢