ASP.NET Core轻松入门Bind读取配置文件到C#实例

简介: 首先新建一个ASP.NET Core空项目,命名为BindReader 然后 向项目中添加一个名为appsettings.json的json文件,为什么叫appsettings呢?  打开Program.

首先新建一个ASP.NET Core空项目,命名为BindReader

然后 向项目中添加一个名为appsettings.json的json文件,为什么叫appsettings呢?  打开Program.cs 

 

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

        public static IWebHost BuildWebHost(string[] args) =>
            WebHost.CreateDefaultBuilder(args)
                .UseStartup<Startup>()
                .Build();
    }
代码中的IWebHost在启动时,具有自动加载appsettings.json的特性,所以命名成这个就不用特意地加载了。

 

然后再appsetting.json中写入数据,数据如下:

 

{
  "Name": "pragram language",
  "Items": [
    {
      "Language": "C#",
      "Tool": "visual studio"
    },
    {
      "Language": "JAVA",
      "Tool": "Elcipse"
    }
  ]

}

在项目中添加一个Class的类,根据该json文件的结构,创建Clsaa类中的内容,注意Class中的字段名称和Json中的字段名称必须要个匹配,一一对应。

 

Claa类中的代码如下:

 

 public class Class
    {
        public String Name { get; set; }
        public List<Item> Items { get; set; }
    }
    public class Item
    {
        public string Language { get; set; }
        public string Tool { get; set; }
    }

可以看到字段与Json内的数据时一一对应的。

 

打开startup.cs文件

修改startup.cs的构造函数并添加Connection属性

 

 public IConfiguration Configuration { get; set; }

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }


 

实例化一个Class类

 

   var myClass = new Class();


 

通过connection将配置文件中的数据来绑定Class实例

 

 Configuration.Bind(myClass);


 

数据展现

 

 Console.WriteLine($"name:{myClass.Name}");
                Console.WriteLine();
                for (int i = 0; i < myClass.Items.Count; i++)
                {
                    await context.Response.WriteAsync($"language:{myClass.Items[i].Language}");
                    await context.Response.WriteAsync($"tool:{myClass.Items[i].Tool}");
                }


 


总体的startup.cs中的代码如下:

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;

namespace BindReader
{
    public class Startup
    {
        public IConfiguration Configuration { get; set; }

        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        // 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) =>
            {
                //var con = new ConfigurationBuilder().AddJsonFile("appsettings.json");
                //Configuration = con.Build();
                var myClass = new Class();
               
                Configuration.Bind(myClass);
                Console.WriteLine($"name:{myClass.Name}");
                Console.WriteLine();
                for (int i = 0; i < myClass.Items.Count; i++)
                {
                    await context.Response.WriteAsync($"language:{myClass.Items[i].Language}");
                    await context.Response.WriteAsync($"tool:{myClass.Items[i].Tool}");
                }
                await context.Response.WriteAsync("Hello World!");
            });
        }
    }
}

以上完整github项目代码地址:https://github.com/liuzhenyulive/BindReader

 

有任何疑问可以在评论区留言。


 

相关文章
|
12天前
|
消息中间件 前端开发 小程序
一个基于.NET Core构建的简单、跨平台、模块化的商城系统
今天大姚给大家分享一个基于.NET Core构建的简单、跨平台、模块化、完全开源免费(MIT License)的商城系统:Module Shop。
|
12天前
|
XML 开发框架 .NET
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
21 1
|
12天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
27 0
|
12天前
|
Linux API iOS开发
.net core 优势
.NET Core 的优势:跨平台兼容(Windows, macOS, Linux)及容器支持,高性能,支持并行版本控制,丰富的新增API,以及开源。
30 4
|
12天前
|
开发框架 人工智能 .NET
C#/.NET/.NET Core拾遗补漏合集(持续更新)
在这个快速发展的技术世界中,时常会有一些重要的知识点、信息或细节被忽略或遗漏。《C#/.NET/.NET Core拾遗补漏》专栏我们将探讨一些可能被忽略或遗漏的重要知识点、信息或细节,以帮助大家更全面地了解这些技术栈的特性和发展方向。
|
12天前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
50 0
|
12天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
34 0
|
12天前
mvc.net分页查询案例——mvc-paper.css
mvc.net分页查询案例——mvc-paper.css
6 0
|
12天前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
125 5
|
12天前
|
XML 前端开发 定位技术
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
C#(NET Core3.1 MVC)生成站点地图(sitemap.xml)
35 0

热门文章

最新文章