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

大家有没有发现一个问题?那就是在.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. linux 操作笔记

    1.设置防火墙,允许用户使用http访问本机 [root@localhost geoserver]# systemctl enable httpdCreated symlink from /etc/s ...

  2. Java数据结构和算法(一)概念

    Java数据结构和算法(一)概念 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 一.逻辑结构 数据之间的相互关系称为逻辑结构 ...

  3. 633. Sum of Square Numbers

    static int wing=[]() { std::ios::sync_with_stdio(false); cin.tie(NULL); ; }(); class Solution { publ ...

  4. 2018.09.23 关键网线(tarjan)

    描述 给出一个无向连通图,即在任一个点对间存在路径.有的点提供服务a, 有的点提供服务b .同一个点可能有两种服务类型.每个点必须与提供2种服务的点连通.如果一个边断掉,就可能出现有些点不能被服务到, ...

  5. 使用百度webuploader实现大文件上传

    版权所有 2009-2018荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...

  6. oracle创建新的用户 创建序列 并生成自动自增

    1.用有dba权限的用户登录:sys用户 system 口令:manager 2.创建一个新用户:create user abc identified by 123456; 3.授予DBA权限: gr ...

  7. (并查集)How Many Tables -- HDU --1213

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=1213 http://acm.hust.edu.cn/vjudge/contest/view.action ...

  8. NHibernate的搭建

    1.新建项目 Business:业务逻辑类 Data:数据层,存放数据库的操作及Nhibernate辅助类 Domain:数据实体和数据库映射文件 2.使用NuGet下载Nhibernate 数据库配 ...

  9. Codeforces805B. 3-palindrome 2017-05-05 08:33 156人阅读 评论(0) 收藏

    B. 3-palindrome time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  10. hdu 2845 Beans 2016-09-12 17:17 23人阅读 评论(0) 收藏

    Beans Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Subm ...