【问题标题】:Url is not being read from appsettings.json没有从 appsettings.json 读取 URL
【发布时间】:2021-09-01 23:47:56
【问题描述】:

如果我问任何愚蠢的问题,请提前道歉,因为这对我来说都是全新的,但我基本上需要将一些存在于 cs 文件中的硬编码 URL 存储到 json 文件中。

这不是一个 web 项目,这个项目通过 NUnit 它是一个 .NETCore 应用程序运行一系列 selenium 自动化测试

所以我的 appsettings.json 看起来像:

{
  "Development": {
    "urlName": "https://dev.website.com"
  }
}

我的 Program.cs 文件看起来像

using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;


namespace Automation
{
    class Program
    {
        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration((hostingContext, config) =>
            {
                config.AddEnvironmentVariables();
                config.AddCommandLine(args);               
            });
        
    }
}

我基本上在我的启动“BaseTest”类中​​创建了一个构造函数,这是在测试本身执行之前首先运行的类,构造函数如下:

  protected IConfiguration _config;

        public BaseTest()
        {
             _config = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .Build();
            baseUrl = _config["urlName"];
        }

这个想法是,一旦运行 BaseTest 类中的这一行,它就会从 json 文件中提取 URL

driver.Navigate().GoToUrl(baseUrl);

但它返回为空,我知道我错过了一些东西,但不知道什么,或者如果我什至在正确的方向上请帮助。

appsettings.json 文件也设置为始终复制

【问题讨论】:

    标签: c# .net-core config


    【解决方案1】:

    urlName 位于名为 Development 的属性/部分中

    var baseUrl = _config.GetSection("Development")["urlName"]
    

    注意:还有许多其他方法可以以类型化方式执行此操作,将其插入 .net 核心,与 DI 更简洁地集成,并可选择使用 IOptions ,但是这与您所拥有的内联


    如果你安装了Microsoft.Extensions.Configuration.Binder nuget,你也可以想象这样的事情

    public class Development
    {
       public Uri UrlName { get; set; }
    }
    
    ...
    
    var myConfig = _config.GetSection(nameof(Development)).Get<Development>();
    

    如果您想使用 一种 多种 方式的选项模式,请添加 Microsoft.Extensions.Options.ConfigurationExtensions nuget 并执行以下操作

    services.Configure<Development>(_config.GetSection(nameof(Development)));
    

    【讨论】:

      猜你喜欢
      • 2018-08-02
      • 1970-01-01
      • 2022-01-10
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-06
      相关资源
      最近更新 更多