命令行配置

我们通过vs2017创建一个控制台项目CommandLineSample

可以看到现在项目以来的是dotnet core framework
我们需要吧asp.net core引用进来,我们可以直接添加Microsoft.AspNetCore.All
 

安装完成之后,我们可以通过using Microsoft.Extensions.Configuration;来进行后续的配置
static void Main(string[] args)
{
var builder = new ConfigurationBuilder()//初始化一个ConfigurationBuilder
.AddCommandLine(args);//扩展函数 var configuration = builder.Build();//拿到configuration //查看configuration里面有什么
Console.WriteLine($"name:{configuration["name"]}");
Console.WriteLine($"age:{configuration["age"]}"); Console.ReadLine();
}
这时候直接执行的话不会有结果,因为我们没有对configuration进行配置
我们可以在调试里面进行参数配置,运行结果
configuration一般以键值对的形式存在,我们如果要给他传递默认的参数的话,可以用一个dictionary来传递,然后以内存的形式添加进去
using System;
using System.Collections.Generic;
using Microsoft.Extensions.Configuration; namespace CommandLineSample
{
class Program
{
static void Main(string[] args)
{
var settings = new Dictionary<string, string>
{
{"name","菜鸟起飞"},
{"age",""}
}; var builder = new ConfigurationBuilder()//初始化一个ConfigurationBuilder
.AddInMemoryCollection(settings)//以内存的形式添加进来
.AddCommandLine(args);//扩展函数 var configuration = builder.Build();//拿到configuration //查看configuration里面有什么
Console.WriteLine($"name:{configuration["name"]}");
Console.WriteLine($"age:{configuration["age"]}"); Console.ReadLine();
}
}
}
 
这个时候我们就可以将调试里面的参数去掉了,直接用控制台启动项目,可以看到传递参数和不传递参数会有不同的配置显示效果
 
 

Json文件配置

 新建控制台项目JsonConfigSample
我们需要吧asp.net core引用进来,我们可以直接添加Microsoft.AspNetCore.All
然后新建json文件 class.json 并生成到bin
{
"ClassNo": "",
"ClassDesc": "菜鸟入门ASP.NET Core", "Students": [
{
"name": "老王",
"age": ""
},
{
"name": "老李",
"age": ""
},
{
"name": "老牛",
"age": ""
}
]
}
然后读取class.json文件,读取结果
 

Bind读取配置到C#实例

 新建控制台项目OptionsBindSample

选择空的模板
这个时候创建的Startup.cs文件中没有Configuration,由于我们要用到Configuration,所以我们要用到依赖注入,把Configuration加进来
这个时候我们就可以在Startup.cs中使用Configuration了
新建Class.class班级类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks; namespace OptionsBindSample
{
public class Class
{
public int ClassNo { get; set; } public string ClassDesc { get; set; } public List<Student> Students { get; set; }
} public class Student
{
public string Name { get; set; } public string Age { get; set; }
}
}
添加asp.net配置文件appsettings.json
{
"ClassNo": "",
"ClassDesc": "菜鸟入门ASP.NET Core", "Students": [
{
"name": "老王",
"age": ""
},
{
"name": "老李",
"age": ""
},
{
"name": "老牛",
"age": ""
}
]
}
为什么要添加配置文件呢?我们可以看下图:因为在WebHost启动的时候默认是没有添加配置文件的,但是当项目启动的时候,我们会默认读取appsettings.json这里的内容到Configuration里面去,是通过CreateDefaultBuilder这个方法把他们加载进去的
 
这时候我们可以在Startup.cs当中将读取的appsetting的Configuration绑定到对应的Class实例化模型,并打印出来,运行后现实吧效果,显示的格式忘调了,各位可以尝试自己去调一调

在Core Mvc中使用Options

添加MVC中间件(Middleware)

首先,我们在前面的OptionsBindSample项目中新建文件夹:Controllers、Views。添加一个HomeController。给HomeController的Index动作添加Index视图,
接下来在Startup.cs中注释掉以下内容,因为如果不注释的话管道会一直被占用,导致我们的mvc无法访问
 然后在Startup.cs的ConfigureServices方法中添加mvc
接下来在Startup.cs的Configure方法中配置使用MVC默认路由

控制器依赖注入

 通过依赖注入的方式在HomeController中注入myClass。只不过这次我们不能用bing的方法,而是用IOption<T>泛型方法将班级注入进去

这时候我们返回强类型视图

依赖注入和视图完成之后呢,我们要在Startup.cs的ConfigureServices方法中注册一下Class到Options,将Configuration传进去,这样在HomeController调用IOptions<Class>的时候,才会能从配置中拿到Class的内容
 

启动之后效果
 

【小扩展】:我们也可以把注入直接取出来,通过依赖注入框架直接在视图中显示出来

新建控制器Home2Controller,不需要添加任何依赖注入的配置。创建Index视图,直接在视图中引用IOtions<T>以强类型视图的方式注入进去

运行效果
 

谈一谈 Program.cs中的BuildWebHost方法

当我们创建mvc项目的时候,自动创建的Program.cs中的BuildWebHost是下面这个样子的,无法访问其他的*,json配置文件
对其进行修改来读取特定的*.json配置文件

 
 

菜鸟入门【ASP.NET Core】5:命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options的更多相关文章

  1. 在windows下使用cmd命令行对java文件进行编译和执行

    windows下利用cmd命令行可以调用jdk里的javac.exe和java.exe对java文件进行编译和执行,前提是jdk已成功安装并正确配置相关环境变量 相关配置链接:java基础学习总结—— ...

  2. 【ASP.NET Core快速入门】(五)命令行配置、Json文件配置、Bind读取配置到C#实例、在Core Mvc中使用Options

    命令行配置 我们通过vs2017创建一个控制台项目CommandLineSample 可以看到现在项目以来的是dotnet core framework 我们需要吧asp.net core引用进来,我 ...

  3. vs for Mac中的启用Entity Framework Core .NET命令行工具

    在vs for Mac的工具菜单中已没有了Package Manager Console. 我们可以通过以下方法使用Entity Framework Core .NET命令行工具: 1.添加Nuget ...

  4. ASP.NET Core的配置(1):读取配置信息

    提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化 ...

  5. 命令行导入SQL文件

    摘要:把数据库导出为XX.sql格式的数据库文件,导入到另外一个数据库中的时候,总是无法全部导入.及时用mysql的命令界面导入依然是无法全部导入.老师告诉我:在命令行中运行的效率和成功率是最快和最高 ...

  6. 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)

    命令行创建畸形文件夹: 第一步:在运行中输入cmd,回车,打开命令行窗口 第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如D盘(输入d:) 第三步:输入 MD 123..\ 回车,注意文件夹名 ...

  7. mysql命令行执行外部文件

    mysql命令行执行外部文件

  8. sharepoint 使用命令行注册dll文件到gac的方法

    使用命令行注册dll文件到gac的方法: gacutil.exe -i D:\SPFormLoginProject.dll 删除gac的dll方法: gacutil /u "SPFormLo ...

  9. Visual Studio命令行创建库文件lib

    Visual Studio命令行创建库文件lib OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 建一个文件Static_Lib.h,源代码如下 #ifndef ...

随机推荐

  1. MYSQL性能查看(多指标)

    网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...

  2. C# 从后台代码同步或异步注册Javascript到页面之RegisterStartupScript和RegisterClientScriptBlock的区别

    下面来讲讲同步注册JS和异步注册JS的区别 同步注册JS:RegisterClientScriptBlock,相当于在 form开始处(紧接 <form runat="server&q ...

  3. nginx 502错误 upstream sent too big header while reading response header from upstream

    原本的设置是 proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; 在这种配置下,使用fiddler进行抓包分 ...

  4. 在.NET Core中三种实现“可插拔”AOP编程方式(附源码)

    一看标题肯定会联想到使用动态编织的方式实现AOP编程,不过这不是作者本文讨论的重点. 本文讨论另外三种在netcore中可实现的方式,Filter(过滤器,严格意义上它算是AOP方式),Dynamic ...

  5. javascript知识整理之this

    js中的this是一个头疼的问题,尤其对于笔者这种初级的菜鸟来讲,下面梳理下this的知识,可以当做是初级进阶也好入门也罢,总归输出的才是自己掌握的: Js中this不是由词法作用域决定的 而是调用时 ...

  6. Tools - Atom编辑器

    Atom官网 Atom编辑器的常用插件 预览 document-outline:Show a heirarchical outline of a text document minimap:A pre ...

  7. Docker - 国内镜像的配置及使用

    Docker国内镜像 DaoCloud - Docker加速器 阿里云 - 开发者平台 微镜像 - 希云cSphere 网易蜂巢 阿里云的Docker加速器 阿里云 - 开发者平台:https://d ...

  8. Hive SQL基础操作

    创建表 hive 查看本地的文件#Can execute local commands within CLI, place a command in between ! and ;!cat data/ ...

  9. Python项目代码结构

    目录结构组织方式 简要解释一下: bin/: 存放项目的一些可执行文件,当然你可以起名script/之类的也行. luffy/: 存放项目的所有源代码.(1) 源代码中的所有模块.包都应该放在此目录. ...

  10. Zabbix系列之三——部署JMX监控tomcat

    zabbix提供了一个java gateway的应用去监控jmx(Java Management Extensions,即Java管理扩展)是一个为应用程序.设备.系统等植入管理功能的框架.JMX可以 ...