【问题标题】:What is the best way to pass a url in a class.cs in .net core?在 .net 核心的 class.cs 中传递 url 的最佳方法是什么?
【发布时间】:2020-11-17 21:20:12
【问题描述】:

我开发了一个代码,用于执行一些 http 请求。我曾经对用于 http 调用的 url 进行硬编码,但我想让它更有效率。我所做的是:

更新了 appsettings.json 文件:

{

    "Logging": {
        "LogLevel": {
            "Default": "Information",
            "Microsoft": "Warning",
            "Microsoft.Hosting.Lifetime": "Information"

        }
    },
    "AllowedHosts": "*",
    "urls": "http://localhost:5002",
}

添加了 urls 字段。

在我想要 url 的类中创建了一个字段:

private readonly string _url = ConfigurationManager.AppSettings["urls"];

Program.cs 类

public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                    webBuilder.UseUrls("http://localhost:5002");
                });
    }

为了从 appsettings 中获取 url,然后将 _url 变量传递给我想在类中使用它的位置。但是由于某种原因,当我尝试运行程序时,我得到了空值。难道我做错了什么?还有比这更好的解决方案吗? 提前谢谢你

【问题讨论】:

  • 你能分享你的startup.cs吗?
  • 请添加您的 startup.cs 和您的主类以检查您是否将 .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true); 添加到您的配置生成器
  • 您确定这是来自 appsettings.json 而不是来自 appsettings.Development.json 的内容吗?
  • 是的,我查过了

标签: c# .net http url httprequest


【解决方案1】:

appsettings.json 加载到应用程序构建器的方式与 .NET Framework 不同。 但这已在另一篇文章中得到解答。 见How to read AppSettings values from a .json file in ASP.NET Core

【讨论】:

    【解决方案2】:

    为了避免这个问题,你可以做的是使用Microsoft.Extensions.Configuration 类从appsettings.json 检索你的数据。

    您可能还需要在控制器类中注入Configuration,如下所示

    private readonly IConfiguration _config;
    
    public ConfigurationController(IConfiguration config)
    {
        _config = config;
    }
    

    现在您可以使用以下代码检索您的数据:

    _config.GetValue<string>("urls");
    

    【讨论】:

    • 我可以初始化配置类以将其传递给构造函数吗?
    • 你不需要初始化它。
    • @Josh 抱歉,我刚刚更新了我的帖子,请重试并检查它是否可以正常工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多