繁体   English   中英

.NET Core API 调用 .NET 项目中的方法表示在 app.config 文件中找不到连接字符串

[英].NET Core API call to a method in a .NET Project is saying it can't find Connection strings in the app.config file

我有一个 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 中:强烈建议创建一流的对象。 (配置值持有人-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 与 IOptionsSnaphot 与 IOptionsMonitor

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM