干了一天的活,还有点时间,给兄弟们写点东西吧。

大家有没有发现一个问题?那就是在.Net Core的MVC项目里面,没有.config文件了!!!同志们,没有config文件了啊,这样搞,我以后要做些灵活的配置,又不想动源代码,或者说我们的程序已经打包了,怎么办啊?!

呵呵呵,.Net Core给我们提供了一个叫appsettings.json的文件给我们这些受虐的群众,用于取代config文件,为什么要这么做我不懂,也不想懂。我只要知道怎么去用它就行了。

但是,怎么去用呢?因为我试了一下,淡的淡的淡的,ConfigurationManager.AppSettingsConfigurationManager.ConnectionStrings这两个东西都不能用了。刚开始纠结了一段时间,后来查了半天资料也没有什么头绪就放弃了,想着回头抽空写个程序直接读文件去,我就不信我读不出你来了!!!后来因为巧合,发现了一个方法可以很方便的读取配置文件的内容,吼吼。

废话我就不说了,直接说怎么搞吧!

首先,我们在项目下随便找个地方新建一个类库文件,我给放在MyCMS.Web项目中的Models文件夹下了,取名叫MyConfig.cs。然后,我们在这个文件中新建一个名叫MyConfig的类,给它一些属性。效果如下:

然后,我们在appsettings.json中,也给加上一些相应的配置(属性字段必须和咱们前面定义的类属性保持一致),父名称也叫MyConfig,并给它的属性赋上一些值,如下:

好了,准备工作完成,接下来,我们打开Startup.cs文件,添加MyCMS.Web.Models的引用,然后在ConfigureServices方法中加入一段代码:

services.Configure<MyConfig>(this.Configuration.GetSection("MyConfig"));
 
效果如下:
 

在控制终端里面输入命令dotnet build MyCMS.Web,先编译一下看看是不是成功——还好,一切正常。

看到了吧?我们看起来好像是闭着眼睛干了一些我们也不知道结果是啥的事,因为service.Configure这个东西,从英文介绍上看,好像是说把配置信息注册进寄存器中了。然后,我们怎么去读它出来呢?在哪读它呢?哈哈,在哪读?当然是在控制器里面了……因为业务操作的入口其实就是控制器,从控制器这里得到了东西后,接下来的事就可以任由你发挥了啊。

我们打开HomeController这个控制器,声明一个MyConfig的对象并增加一个带IOptions参数的构造函数,并在构造函数中对前面生成的MyConfig对象赋值,效果如下:

接下来你就可以拿着这个myConfig对象去任意去潇洒了——这里面实际上是有一个反序列化的过程,将JSON转换成了对象,并给对象的属性赋值了。也不管了,先用着吧,回头用得多了,你和我也就知道为什么要这么用了。能用就好,不是吗?

接下来我们来看看运行效果,先打上个断点,然后用劲你浑身的力气使劲摁下F5,启动调试。下图,效果:

(PS:有的同学可能在VS Code里面跑不起来,会报那个  未能找到类型或命名空间名“IOptions<>”(是否缺少 using 指令或程序集引用?)  的错误,这个时候……哈哈,看到上边我加的那个没?

using Microsoft.Extensions.Options;
 
如果还不行,那我也不知道怎么办了,但是你如果换成Visual studio2017来重新创建项目来弄一遍的话,肯定就跑起来了,不会有问题。)
 
另外,有的同学摁下F5后,可能会提示说“preLaunchTask“build”已终止,退出代码为 1” ,这特么又是什么鬼?我的办法是——删掉已经生成的task.json,然后摁下组合键Ctrl+Shift+P,会出现下边这么个东西,选择第一个“配置任务运行程序”,接着,又会出来另外一个东西(这过程不可描述,反正就是出来了),选择“.NET Core”,然后它又会给你自动生成一个task.json文件。如下面连接三图:
 
 

好了,不管三七二十一,摁下F5,好啦!!!一切正常!!!

使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之三(配置文件读取)的更多相关文章

  1. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之一

    好吧,现在我们假设你已经安装好了VS Code开发工具..Net Core 2.0预览版的SDK dotnet-sdk-2.0.0(注意自己的操作系统),并且已经为VS Code安装好了C#扩展(在V ...

  2. 使用VS Code开发.Net Core 2.0 MVC Web应用程序教程之二

    好了,废话也不多说,咱们直接来看看这款MVC的造型——你可能会大吼:“这……这特么的都是些什么鬼?” 靠,告诉你吧,我也不知道这都是些什么鬼,反正以前我是没有见过这样的MVC.咦,老纸的config文 ...

  3. 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台

    使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NET Core.都只是在windows下运行. .NET Core真正的核心是跨平 ...

  4. 部署到Linux使用VS Code 开发.NET Core 应用程序

    使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台 使用VS Code 开发.NET Core 应用程序 部署到Linux 跨平台. 前面讲解了VSCode开发调试 .NE ...

  5. ASP.NET Core 2.0 MVC项目实战

    一.前言 毕业后入职现在的公司快有一个月了,公司主要的产品用的是C/S架构,再加上自己现在还在学习维护很老的delphi项目,还是有很多不情愿的.之前实习时主要是做.NET的B/S架构的项目,主要还是 ...

  6. ASP.NET CORE 1.0 MVC API 文档用 SWASHBUCKLE SWAGGER实现

    from:https://damienbod.com/2015/12/13/asp-net-5-mvc-6-api-documentation-using-swagger/ 代码生成工具: https ...

  7. .net core 2.0 mvc 获取配置信息

    mvc_core_config *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 ...

  8. asp.net core 3.0 MVC JSON 全局配置

    asp.net core 3.0 MVC JSON 全局配置 System.Text.Json(default) startup配置代码如下: using System.Text.Encodings. ...

  9. asp.net core 3.0获取web应用的根目录

    目录 1.需求 2.解决方案 1.需求 asp.net core 3.0的web项目中,在controller中,想要获取wwwroot下的imgs/banners文件夹下的所有文件: 在传统的asp ...

随机推荐

  1. 模板练习(LUOGU)

    1:并查集 P3183食物链 #define man 300050 ; int find(int x){ if(fa[x]==x) return fa[x]; return fa[x]=find(fa ...

  2. centos7 编译安装mysql

    centos 7 安装mySql   1,准备mySql源码安装 #wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.23.tar ...

  3. 怎样使用word2013发布csdn博客

    目前大部分的博客作者在用Word写博客这件事情上都会遇到以下3个痛点: 1.所有博客平台关闭了文档发布接口,用户无法使用Word,Windows Live Writer等工具来发布博客.使用Word写 ...

  4. 系统目录APK更新——权限问题

    package com.example.wx; import java.io.File;import java.io.FileOutputStream;import java.io.IOExcepti ...

  5. C# Timer类

    C# 有三种不同的Timer类 1.Threading.Timer 2.Timer.Timer 3.Forms.Timer using System; using System.Collections ...

  6. Trystrtofloat

    TryStrToFloat为 ‘+1’和‘-1’和 ‘.1’是可以装换成功的

  7. System.Windows.Freezable 在未被引用的程序集中定义

    System.Windows.Freezable 在未被引用的程序集中定义 解决方法 添加windowsbase.dll 引用

  8. .NET 调试入门(二) dump 出程序数据

    前言          有时候我们需要看程序中运行情况怎么,如:某对象字段的具体值是多少等问题,我们就可以用调试工具找到答案.我们还是沿用前面的程序.原代码在文章低部. dump栈上的值 在线程4中输 ...

  9. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一)

    系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...

  10. OpenLayers在地图上显示统计图,饼图线状图柱状图,修复统计图跳动的问题

    环境介绍 Openlayers ol.js v5.3.0 Highcharts highcharts.js v7.0.1 jquery jquery-3.3.1.js v3.3.1 显示效果 地图放大 ...