


Detailed explanation of the example of .NET completing Configuration reading configuration
本篇文章主要介绍了详解ASP.NET Core实现强类型Configuration读取配置数据 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
前言
实现读取JSON文件几种方式,在项目中采取老办法简单粗暴,结果老大过来一看,恩,这样不太可取,行吧那我就用.NET Core中最新的方式诺,切记,适合的才是最好的,切勿懒。
.NET Core读取JSON文件通过读取文件方式
当我将VS2015项目用VS2017打开后再添加控制器,此时会报错如下:
此时我们应该在该项目中的.csproj中添加如下这一句才能解决此问题:
<ItemGroup> <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.0" /> </ItemGroup>
我们在读取存放JSON目录时利用 IHostingEnvironment
类来实现,通过该类中的如下两个属性来获取项目目录:
//获取当前项目所在目录 var contentPath = _hostingEnv.ContentRootPath; //获取wwwroot所在目录 var rootPath = _hostingEnv.WebRootPath;
我们在当前项目下建立一个存放JSON的文件夹,如下:
在该json文件中,我们给出数据如下:
{ "name": "jeffcky", "age": 25 }
接下来则是读取JSON文件并获取数据了:
[HttpPost] public async Task<IActionResult> Json() { var result = string.Empty; var filePath = _hostingEnv.ContentRootPath + Path.DirectorySeparatorChar + "Json" + Path.DirectorySeparatorChar + "Read.json"; using (var streamReader = System.IO.File.OpenText(filePath)) { result = await streamReader.ReadToEndAsync(); } var json = new { name = string.Empty, age = 0 }; var data = JsonConvert.DeserializeAnonymousType(result, json); return View(); }
此时将完全读取数据:
到今天我才发现匿名类型是只读的,而不能赋值。【可笑的我】
上述是一种通过读取Json文件的方式来读取数据,当每来一个请求则读取一次文件,不太合适,所以老大说不可取,那就用第二种诺。
.NET Core内置读取JSON文件
当我们需要在其他控制器获取 appsettings.json
中的值时我们是怎样做的呢?比如我们要读取该json文件jb51节点下的name值
{ "LogPath": "C:\\Jeffcky_StudyEFCore\\logs", "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Debug", "System": "Information", "Microsoft": "Information" } }, "jb51": { "name": "Jeffcky" } }
此时我们通过配置类Configuration来读取,同时我们需要将此类接口进行注入,下面两种方式皆可:
services.AddSingleton<IConfigurationRoot>(Configuration); services.AddSingleton<IConfiguration>(Configuration);
接下来同样在控制器构造函数中进行获取。
然后就是获取该json中cnblogs节点下的数据了。
这种方式挺好,但是对于我们习惯了智能提示来说要是写错了单词,还得检查岂不麻烦,所以我们最终读取json通过强类型来实现。在程序启动时就加载我们自定义的json文件。
public Startup(IHostingEnvironment env) { var builder = new ConfigurationBuilder() .SetBasePath(env.ContentRootPath) .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true) .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true) .AddJsonFile("read.json") .AddEnvironmentVariables(); Configuration = builder.Build(); }
由于在读取配置json需要一个根节点,所以我们将上述read.json文件进行如下修改:
{ "jb51": { "Name": "jeffcky", "Age": 25 } }
然后在 ConfigureServices
方法中获取该节点。
services.Configure<Person>(Configuration.GetSection("jb51"));
此时在控制器构造函数就变成了如下这样:
private readonly Models.Person p; public ReadJsonController(IOptions<Models.Person> option) { p = option.Value; }
最终将直接读取到json中配置的数据:
[HttpPost] public IActionResult Json() { var age = p.Age; var name = p.Name; return View(); }
一切都是那么简单和自然。
总结
本节稍稍讲解了下在.NET Core中如何实现强类型Configuration从而使得当程序启动时直接将json文件进行加载到内存当中而非每次都去读取文件来加载,希望对阅读本文的你有稍稍帮助。
【相关推荐】
1. ASP免费视频教程
2. 李炎恢ASP基础视频教程
3. ASP教程
The above is the detailed content of Detailed explanation of the example of .NET completing Configuration reading configuration. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



The usage methods of symbols in C language cover arithmetic, assignment, conditions, logic, bit operators, etc. Arithmetic operators are used for basic mathematical operations, assignment operators are used for assignment and addition, subtraction, multiplication and division assignment, condition operators are used for different operations according to conditions, logical operators are used for logical operations, bit operators are used for bit-level operations, and special constants are used to represent null pointers, end-of-file markers, and non-numeric values.

In C, the char type is used in strings: 1. Store a single character; 2. Use an array to represent a string and end with a null terminator; 3. Operate through a string operation function; 4. Read or output a string from the keyboard.

In C language, special characters are processed through escape sequences, such as: \n represents line breaks. \t means tab character. Use escape sequences or character constants to represent special characters, such as char c = '\n'. Note that the backslash needs to be escaped twice. Different platforms and compilers may have different escape sequences, please consult the documentation.

In C language, the main difference between char and wchar_t is character encoding: char uses ASCII or extends ASCII, wchar_t uses Unicode; char takes up 1-2 bytes, wchar_t takes up 2-4 bytes; char is suitable for English text, wchar_t is suitable for multilingual text; char is widely supported, wchar_t depends on whether the compiler and operating system support Unicode; char is limited in character range, wchar_t has a larger character range, and special functions are used for arithmetic operations.

The difference between multithreading and asynchronous is that multithreading executes multiple threads at the same time, while asynchronously performs operations without blocking the current thread. Multithreading is used for compute-intensive tasks, while asynchronously is used for user interaction. The advantage of multi-threading is to improve computing performance, while the advantage of asynchronous is to not block UI threads. Choosing multithreading or asynchronous depends on the nature of the task: Computation-intensive tasks use multithreading, tasks that interact with external resources and need to keep UI responsiveness use asynchronous.

In C language, char type conversion can be directly converted to another type by: casting: using casting characters. Automatic type conversion: When one type of data can accommodate another type of value, the compiler automatically converts it.

There is no built-in sum function in C language, so it needs to be written by yourself. Sum can be achieved by traversing the array and accumulating elements: Loop version: Sum is calculated using for loop and array length. Pointer version: Use pointers to point to array elements, and efficient summing is achieved through self-increment pointers. Dynamically allocate array version: Dynamically allocate arrays and manage memory yourself, ensuring that allocated memory is freed to prevent memory leaks.

The char array stores character sequences in C language and is declared as char array_name[size]. The access element is passed through the subscript operator, and the element ends with the null terminator '\0', which represents the end point of the string. The C language provides a variety of string manipulation functions, such as strlen(), strcpy(), strcat() and strcmp().
