从.Net Core 2.0 Web应用程序中的apppsettings.json文件中读取值[重复]

Posted

技术标签:

【中文标题】从.Net Core 2.0 Web应用程序中的apppsettings.json文件中读取值[重复]【英文标题】:Read values from apppsettings.json file in .Net Core 2.0 web application [duplicate] 【发布时间】:2019-10-19 02:30:11 【问题描述】:

我正在 .Net Core 2.0 中启动一个小型开源项目,以了解此技术。 我有一个空项目,我需要从远程 URL 提要中读取 beginig。我需要那个,可以修改 URL,我认为最好的方法是将它写在项目的 appsettings.json 文件中。但我不知道如何从 Startup.cs 类中读取此文件。

我已经尝试过了,但在 .Net Core 项目中不起作用

ConfigurationManager.AppSettings["DataURL"];

这是 Startup.cs 类的内容:

public class Startup

    // This method gets called by the runtime. Use this method to add services to the container.
    // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
    public void ConfigureServices(IServiceCollection services)
    
    

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env)
    
        if (env.IsDevelopment())
        
            app.UseDeveloperExceptionPage();
        

        app.Run(async (context) =>
        
            await context.Response.WriteAsync("Hello World!");
            using (WebClient wc = new WebClient())
            
                string jsonData = wc.DownloadString("http://servizos.meteogalicia.gal/rss/observacion/ultimos10minPlataformas.action");
                JObject jsonObject = JObject.Parse(jsonData);
            

        );
    

【问题讨论】:

docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/… 可能需要System.Configuration.ConfigurationManager nuget,参考:***.com/questions/47591910/… 我已经完成了(在nuget包管理器中添加System.Configuration.Configurationmanager)。但 ConfigurationManager.AppSettings 为空。我的 appsettings.json 文件有以下内容: "Logging": "LogLevel": "Default": "Warning" , "AllowedHosts": "*", "DataURL": "servizos.meteogalicia.gal/rss/observacion/…" 跨度> 谢谢@nlawalker,我已经用你的链接解决了。 【参考方案1】:

使用依赖注入,您将为您完成 IConfiguration 对象。看到这个

public class Startup

    private readonly IConfiguration _ConfigurationManager ;

    public Startup(IConfiguration config)
    
        _ConfigurationManager = config;
    
......

您现在可以使用 var DataURL =_ConfigurationManager ConfigurationManager["DataURL"]; 读取 appsettings 值

【讨论】:

【参考方案2】:

您可以使用 Newtonsoft 反序列化 appsettings.json。

1:创建一个代表json文件的类。 2:读取文件 3:使用newtowsoft将流转换为点1的类的een对象。

源代码here.

public class Movie

    public string Name  get; set; 
    public int Year  get; set; 


// read file into a string and deserialize JSON to a type
Movie movie1 = JsonConvert.DeserializeObject<Movie>(File.ReadAllText(@"c:\movie.json"));

// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(@"c:\movie.json"))

    JsonSerializer serializer = new JsonSerializer();
    Movie movie2 = (Movie)serializer.Deserialize(file, typeof(Movie));

【讨论】:

谢谢,是个好建议。

以上是关于从.Net Core 2.0 Web应用程序中的apppsettings.json文件中读取值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在新创建的 .NET Core 2.0 Web 应用程序中定位 .NET Standard 2.0?

.NET Core 2.0 中的 HttpWebRequest 抛出 302 Found Exception

AuthorizeAttribute with JWT Token- .NET Core 2.0 中的身份验证

如何从 .Net core 2.0 中的 HttpContext 获取访问令牌

Asp.net Core 2.0 web api 基础框架 详解

在 HTTPS 上使用 Windows 身份验证首次调用 ASP.NET Core 2.0 Web API 在 Chrome 中总是失败