gpt4 book ai didi

c# - System.Configuration.Configuration 需要对象引用

转载 作者:行者123 更新时间:2023-12-02 02:46:37 28 4
gpt4 key购买 nike

我正在为一个简单的问题而焦头烂额。我的 .NET Core 3 应用程序中有一些设置,我认为最好将其移至我的 appsettings.json 文件。我按照本指南这样做:https://www.c-sharpcorner.com/article/reading-values-from-appsettings-json-in-asp-net-core/

在指南的下方,有一节是关于如何依赖注入(inject)部分配置的,我认为这是一个不错的主意。它说要在 ConfigureServices 方法中将以下代码添加到我的 Startup.cs 文件中。

services.Configure<ConfigurationProps>(Configuration.GetSection("ApplicationConfiguration"));

当我这样做时,起初 Configuration 是未知的,我无法从任何已知的扩展/库中导入它。查看建议,我可以看到 NuGet 包 System.Configuration.ConfigurationManager 可用。因此,我尝试安装它以查看它是否对我有帮助。不幸的是,这样做之后,我从 Configuration 对象中收到以下错误:

An object reference is required for the non-static-field, method, or property 'Configuration.GetSection(string)'

根据我一直遵循的指南以及我能够在网上找到的其他文档,我不需要在任何地方实例化 Configuration 类。

那么,如何按照这种方法将我的配置注入(inject)到 services.Configure 方法中?

编辑:添加文件

应用设置.json:

{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"ApplicationConfiguration": {
"StartingPort": 13000,
"NumberOfConnections": 1
}
}

配置属性:

namespace ExternalGateway.Models
{
public class ConfigurationProps
{
public int StartingPort { get; set; }
public int NumberOfConnections { get; set; }
}
}

最佳答案

我将尝试根据您的 appsettings.json 文件和您的 ConfigurationProps 类使我所说的更容易阅读:

在您的 startup.cs 文件中,确保您拥有:

using Microsoft.Extensions.Configuration;

public IConfiguration Configuration { get; }

在您的 startup.cs 文件中。没有它,Configuration.GetSection 是未知的。

将您的类(class)修改为:

namespace ExternalGateway.Models
{
public class ConfigurationProps
{
public const string ConfigurationProps = "ApplicationConfiguration";

public int StartingPort { get; set; }
public int NumberOfConnections { get; set; }
}
}

然后您在 startup.cs 中获取配置的行将如下所示:

public void ConfigureServices(IServiceCollection services)
{
services.Configure<ConfigurationProps>(Configuration.GetSection(ConfigurationProps.ApplicationConfiguration));
}

然后你的依赖注入(inject)到你的类中看起来像这样:

using Microsoft.Extensions.Options;

public class MyClass
{
private readonly int _startingPort;
private readonly int _numberOfConnections;

public MyClass(IOptions<ConfigurationProps> configurationProps)
{
_startingPort = configurationProps.Value.StartingPort;
_numberOfConnections = configurationProps.Value.NumberOfConnections;
}

除非此处有任何拼写错误,否则这应该可以完成您使用 .NET Core 中的选项模式尝试执行的操作。

关于c# - System.Configuration.Configuration 需要对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62681405/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com