Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.net Core 2中管理设置_C#_Asp.net Core_Asp.net Core Mvc_Asp.net Core 2.0 - Fatal编程技术网

C# 在ASP.net Core 2中管理设置

C# 在ASP.net Core 2中管理设置,c#,asp.net-core,asp.net-core-mvc,asp.net-core-2.0,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core 2.0,我正在将MVC5应用程序转换为Core2,对设置感到困惑 我有一个连接到API服务器的服务;API服务器地址存储在AppSettings.json配置文件中,因为存在开发和生产版本 "EtimeSettings": { "Api_Server": "123.123.123.123" } 阅读了一些博客后,我在startup.csConfigureServices中添加了以下代码: services.AddMvc(); var eTimeSettings = new EtimeSett

我正在将MVC5应用程序转换为Core2,对设置感到困惑

我有一个连接到API服务器的服务;API服务器地址存储在AppSettings.json配置文件中,因为存在开发和生产版本

"EtimeSettings": {
    "Api_Server": "123.123.123.123"
}
阅读了一些博客后,我在startup.cs
ConfigureServices
中添加了以下代码:

services.AddMvc();

var eTimeSettings = new EtimeSettingsModel();
Configuration.Bind("EtimeSettings", eTimeSettings);
services.AddSingleton(eTimeSettings);

我不知道如何在API服务中检索这些值

不过,我能够使用以下代码检索这些值

public string GetApiServer()
{
    var builder = new ConfigurationBuilder()
    .SetBasePath(Directory.GetCurrentDirectory())
    .AddJsonFile("appsettings.json");

    EtimeSettingsModel et = new EtimeSettingsModel();
    IConfiguration Configuration = builder.Build();
    Configuration.GetSection("EtimeSettings").Bind(et);
    var apiServer = Configuration["EtimeSettings:Api_Server"];
    return apiServer;
}
但我真的不相信这是最好的方法

我遗漏了什么?

假定

public class EtimeSettingsModel {
    public string Api_Server { get; set; }
}
要设置
IOptions
服务,请调用
AddOptions
ConfigureServices
方法中启动期间的扩展方法。 您可以使用
configure
扩展方法配置选项。 您可以使用委托或绑定选项来配置选项 要配置:

public void配置服务(IServiceCollection服务){
//...
//使用DI设置选项
services.AddOptions();
//通过安装,使用配置来配置eTimestingsModel
//Microsoft.Extensions.Options.ConfigurationExtensions
//使用appsettings.json文件的一个子节绑定选项。
services.Configure(Configuration.GetSection(“etimestettings”);
services.AddMvc();
//...       
}
可以使用
IOptions
accessor服务

private-readonly-etimestings-model-etimestings;
公共MyAPIService(IOptions eTimeSettings){
this.etimestings=etimestings.Value;
}
public void ConfigureServices(IServiceCollection services) {

    //...

    // Setup options with DI
    services.AddOptions();

    // Configure EtimeSettingsModel using config by installing 
    // Microsoft.Extensions.Options.ConfigurationExtensions
    // Bind options using a sub-section of the appsettings.json file.
    services.Configure<EtimeSettingsModel>(Configuration.GetSection("EtimeSettings"));

    services.AddMvc();

    //...       
}
private readonly EtimeSettingsModel eTimeSettings;
public MyAPIService(IOptions<EtimeSettingsModel> eTimeSettings) {
    this.eTimeSettings = eTimeSettings.Value;
}